【发布时间】:2018-07-10 07:30:05
【问题描述】:
当屏幕出现问题时,某些项目被打开添加一个数组列表并向下滚动然后再次向上滚动这个值再次添加到数组列表中,请作为快速解决方案。
public class NeedSizeAdapter extends RecyclerView.Adapter<NeedSizeAdapter.ViewHolder> {
private List<SizeModel> sizeModelList;
public NeedSizeAdapter(List<SizeModel> numbers) {
this.sizeModelList = new ArrayList<>(numbers);
selecteSizeList = new ArrayList<>();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_rv_notificationsetting, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
holder.bindData(sizeModelList.get(position));
//in some cases, it will prevent unwanted situations
holder.mSwitch.setOnCheckedChangeListener(null);
//if true, your checkbox will be selected, else unselected
holder.mSwitch.setChecked(sizeModelList.get(position).isSelected());
if (sizeModelList.get(position).isSelected()) {
selecteSizeList.add(sizeModelList.get(position).getSizeId());
Log.d("selectedSize", sizeModelList.get(position).getSizeId());
}
holder.mSwitch.setTag(sizeModelList.get(position));
holder.mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Switch cb = (Switch) buttonView;
SizeModel contact = (SizeModel) cb.getTag();
contact.setSelected(cb.isChecked());
sizeModelList.get(position).setSelected(cb.isChecked());
// sizeModelList.get(holder.getAdapterPosition()).setSelected(isChecked);
if (isChecked) {
selecteSizeList.add(sizeModelList.get(position).getSizeId());
} else {
selecteSizeList.remove(sizeModelList.get(position).getSizeId());
}
}
});
}
@Override
public int getItemCount() {
return sizeModelList.size();
}
【问题讨论】:
-
如何填充适配器?如果你有 scrollListener 请也发布它。
-
取一个全局布尔值并存储 isSelected 的状态,然后检查条件 (
if (sizeModelList.get(position).isSelected() && isTrue) {) 和布尔值。
标签: android