不过下拉数据弹窗在屏幕下方出现。不想用spinner,需要adapter套adapter,不会。
DetailsAdapter:
@Override
protected void convert(@NonNull BaseViewHolder helper, StackerTasksBean item) {
helper.setText(R.id.tv_status,"站台:"+MathUtil.strForDisplay(item.getSucker()));
helper.addOnClickListener(R.id.tv_status);
}
MathUtil.strForDisplay判空,为空显示“暂无”。实体类Bean中加sucker,就是用于装选择好的文字的,选好后,adapter刷新一下数据就实时显示。
activity:
private List<Bean> mList;
private List<String> list;
private DetailsAdapter mAdapter;
private String exitChoose;//要展示的字段
``
监听器
```java
mAdapter.setOnItemChildClickListener((adapter, view, position) -> {
if(list == null || list.size() == 0){
showToast("请先选择xxx");
return;
}
List<String> str = new ArrayList<>();
str.add(mList.get(position).getId());
Bean bean = mList.get(position);
chooseOptions(str,position,bean);
});
弹窗选择,
private void choosePlatformOptions(List<String> taskId, int position, Bean e){
//专供adapter内部tv_status 点击后更新字段
optionsPicker = new OptionsPickerBuilder(this,
(options1, options2, options3, v) ->{
exitChoose = list.get(options1);
setExitPlatform(taskId, exitChoose);
mList.set(position,e).setStacker(exitChoose);
mAdapter.notifyDataSetChanged();
}).setTitleText("xxx选择")
.setContentTextSize(15)
.setCancelText(getString(R.string.cancel))
.setSubmitText(getString(R.string.confirm))
.setTextColorCenter(getColor(R.color.black_333))
.setDividerColor(getColor(R.color.white))
.build();
optionsPicker.setPicker(list);
optionsPicker.show();
}