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);
}
成果展现
发表回复