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);
}
成果展现