【发布时间】:2017-06-19 15:00:38
【问题描述】:
我有一个带有复选框列表项的回收视图。现在我滚动到recyclerview 的末尾并单击ckeckbox。当我单击复选框时,recyclerview 得到混蛋并且列表移动到列表的顶部。
我在这里发布我的适配器代码供您查看。
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
holder.mChkEquipments.setOnCheckedChangeListener(null);
holder.txt_equiment_number.setVisibility(View.INVISIBLE);
holder.divider.setVisibility(View.INVISIBLE);
if(position==0){
holder.txt_equiment_number.setVisibility(View.VISIBLE);
holder.text_hookEqmnt.setText(mArrayList.get(position).getInspectionName());
holder.divider.setVisibility(View.VISIBLE);
holder.txt_equiment_number.setText(mEquipmentNumber);
}else{
holder.text_hookEqmnt.setText(mArrayList.get(position).getInspectionName());
}
holder.text_hookEqmnt.setText(mArrayList.get(position).getInspectionName());
holder.txt_equiment_number.setText(mEquipmentNumber);
holder.mChkEquipments.setChecked(mArrayList.get(position).getInspectionStatus());
if(mArrayList.get(position).getInspectionStatus()){
holder.mChkEquipments.setButtonDrawable(R.drawable.route_check);
}else{
holder.mChkEquipments.setButtonDrawable(R.drawable.route_close);
}
holder.mChkEquipments.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
/*holder.mChkEquipments.setChecked(isChecked);
mArrayList.get(position).setInspectionStatus(isChecked);
updateStatus(mArrayList.get(position).getId(),isChecked);
if(isChecked){
holder.mChkEquipments.setButtonDrawable(R.drawable.route_check);
}else{
holder.mChkEquipments.setButtonDrawable(R.drawable.route_close);
}*/
}
});
if (position % 2 != 0) {
holder.mVIew.setBackgroundResource(R.color.list_alternative_bg);
} else {
holder.mVIew.setBackgroundResource(R.color.white);
}
}
我也尝试过使用 OnClickListener。但我面临同样的问题。
holder.mChkEquipments.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final boolean isChecked = holder.mChkEquipments.isChecked();
holder.mChkEquipments.setChecked(isChecked);
mArrayList.get(position).setInspectionStatus(isChecked);
updateStatus(mArrayList.get(position).getId(),isChecked);
if(isChecked){
holder.mChkEquipments.setButtonDrawable(R.drawable.route_check);
}else{
holder.mChkEquipments.setButtonDrawable(R.drawable.route_close);
}
}
});
请帮我解决我的问题。
【问题讨论】:
-
我可以知道投反对票的原因是什么吗??
-
看看 google io 2017 ui 性能会议,了解如何“de-janking”你的应用程序......我打赌
updateStatus -
当然。我会检查的。
-
@Selvin.. 我发布了这个问题的答案。
标签: android checkbox android-recyclerview