MaterialDatePicker使用方法
背景
之前使用DatePicker进行程序开发。但是由于本人平板是Nokia N1。系统永远停在5.1版本上了,无法使用DatePicker。所以必须想另一个方案进行替换。此处使用MaterialDatePicker进行替换。此处尝试MaterialDatePicker的时间段的选择方法。
Gradle环境配置
app对应的gradle文件,注意Material的版本。
官网的说明是针对1.3.0版本的。但是创建工程的时候,默认提供的版本是1.2。导致很多接口编译不过。
dependencies {
....
implementation 'com.google.android.material:material:1.3.0'
....
}
画面实现代码
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.google.android.material.datepicker.MaterialDatePicker;
import com.google.android.material.datepicker.MaterialPickerOnPositiveButtonClickListener;
import java.util.ArrayList;
import java.util.Calendar;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
// 解析ARoute提供的参数
ARouter.getInstance().inject(this);
if (mTransFromPath == "") {
Log.e(TAG, "ARouter parameter[transFromPath] is unrecognized");
}
// 创造假数据
dummyData();
// 获得RecycleView的对象
RecyclerView list = findViewById(R.id.home_things_list);
// 设定LayoutManager
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
list.setLayoutManager(layoutManager);
// 设定Layout,数据来源
HomeThingsListAdapter adapter = new HomeThingsListAdapter(this, R.layout.things_list_item, mThings);
// 设定List的点击事件
adapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
Log.i(TAG, "Fridge things list item has been clicked. view:" + view.getId() + " position:" + position);
// 筛选Date的View点击事件
if (view.getId() == R.id.things_list_date_range) {
FridgeThings item = mThings.get(position);
Calendar fromCal = item.getStartDate();
Calendar toCal = item.getEndDate();
// 使用MaterialDatePicker进行时间的选择。此处尝试时间段选择方案。所以用的是dateRangePicker。
MaterialDatePicker dialog = MaterialDatePicker.Builder.dateRangePicker()
.setSelection(new Pair(fromCal.getTimeInMillis(), toCal.getTimeInMillis()))
.build();
// 添加事件监听
dialog.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() {
@Override
public void onPositiveButtonClick(Object selection) {
Log.i(TAG, "selection:" + selection);
// 获得用户的选择结果,设定到item中
Pair result = (Pair)selection;
fromCal.setTimeInMillis((long)result.first);
item.setStartDate(fromCal);
toCal.setTimeInMillis((long)result.second);
item.setEndDate(toCal);
// 通知List的Adapter,数据已经发生了变更。
adapter.notifyItemChanged(position);
}
});
// 显示时间选择框
dialog.show(getSupportFragmentManager(), "DatePicker");
};
}
});
// 绑定adapter
list.setAdapter(adapter);
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。