以前使用DatePicker进行程序开发。可是因为本人平板是Nokia N1。系统永远停在5.1版本上了,没法使用DatePicker。因此必须想另外一个方案进行替换。此处使用MaterialDatePicker进行替换。此处尝试MaterialDatePicker的时间段的选择方法。java
app对应的gradle文件,注意Material的版本。
官网的说明是针对1.3.0版本的。可是建立工程的时候,默认提供的版本是1.2。致使不少接口编译不过。android
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); }