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