【发布时间】:2020-02-19 20:46:44
【问题描述】:
我有一个带有复选框的 recyclerview 适配器。当我尝试选中一个框时,recyclerview 也会检查随机复选框。实际上我发现错误是因为所有复选框都有一个状态并重用视图。而且我尝试了许多在 stackoverflow 中发布的选项,但对我没有任何效果..
如果有任何项目,请在下面检查表格,然后应选中该特定项目复选框..
if (Objects.equals(orderTable.getItemCode(), items.getItemCode()) && Objects.equals(orderTable.getStoreId(), storesPojos.getId()))
{
/*
* Log.e(TAG+" Order Table Code", String.valueOf(orderTable.getItemCode()));
* Log.e(TAG+" ItemsPojo Code", String.valueOf(items.getItemCode()));
*
* Log.e(TAG +" Order Table ID",orderTable.getStoreId());
* Log.e(TAG+" store ID",orderTable.getStoreId());
*/
Log.e("Position of Adapter///", String.valueOf(position));
Log.e("SelectedPosition of Adapter///", String.valueOf(selectedPosition));
if (selectedPosition == position) {
holder.checkBox.setChecked(true);
}
else {
holder.checkBox.setChecked(false);
}
checked++;
noOfItems.setText(String.valueOf(checked));
}
以下代码是我的checkbox.setOnCheckedChangeListener()
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
ItemsPojo itemsPojo = itemList.get(position);
if (selectedPosition == position)
{
checked++;
noOfItems.setText(String.valueOf(checked));
dbHelper.insertItemFromOrderTable(itemsPojo.getItemCode());
}
else
{
checked--;
noOfItems.setText(String.valueOf(checked));
dbHelper.deleteItemFromOrderTable(itemsPojo.getItemCode());
}
这是我的onBindViewHolder()
@Override
public void onBindViewHolder(final ItemsAdapter.MyViewHolder holder, final int position) {
Log.i("Position of Adapter///", String.valueOf(position));
items = itemsPojos.get(position);
selectedPosition = position;
holder.product.setText(items.getProduct());
holder.desc.setText(items.getSubCategory());
if (orderTables.size() != 0) {
Log.e("Order Table Size ", String.valueOf(orderTables.size()));
for (OrderTable orderTable : orderTables) {
if (Objects.equals(orderTable.getItemCode(), items.getItemCode()) && Objects.equals(orderTable.getStoreId(), storesPojos.getId()))
{
/*
* Log.e(TAG+" Order Table Code", String.valueOf(orderTable.getItemCode()));
* Log.e(TAG+" ItemsPojo Code", String.valueOf(items.getItemCode()));
*
* Log.e(TAG +" Order Table ID",orderTable.getStoreId());
* Log.e(TAG+" store ID",orderTable.getStoreId());
*/
Log.e("Position of Adapter///", String.valueOf(position));
Log.e("SelectedPosition of Adapter///", String.valueOf(selectedPosition));
if (selectedPosition == position) {
holder.checkBox.setChecked(true);
}
else {
holder.checkBox.setChecked(false);
}
checked++;
noOfItems.setText(String.valueOf(checked));
}
}
}
【问题讨论】:
-
发布您的 bindview 持有者
标签: android checkbox android-recyclerview