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);}

成果展现