因此,我有一个带复选框的列表视图,该复选框具有一个自定义适配器,该适配器将数据与列表视图绑定。这里的情况是,如果我检查了列表中的第一个项或与此相关的任何项并采取了某些措施,那么我可以成功地从列表中删除该操作项,但是 唯一的问题是,将自动检查已操作的项目 。感谢您的支持。非常感谢。
主要类别:
lvItems = (ListView) findViewById(R.id.lvItems);
lvItems.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
lvItems.setAdapter(adapter);
lvItems.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
CheckedTextView ctv = (CheckedTextView) view;
Items item = adapter.getItem(position);
if (ctv.isChecked())
adapter.addItemCode(item);
else
adapter.removeItemCode(item);
}
});
自定义适配器代码:
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent)
{
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(android.R.layout.simple_list_item_checked, parent, false);
try
{
Items item = this.getItem(position);
convertView.setTag(item);
CheckedTextView ctv = (CheckedTextView)convertView;
ctv.setText(item.Barcode== null? "" : item.Barcode.toUpperCase());
Object lastTag = ctv.getTag();
ctv.setChecked(false);
ctv.setTag(item);
}
catch (Exception e)
{
Logger.log(e);
}
return convertView;
}
public void addItemCode(Items item)
{
if(!selectedItemCodes.contains(item))
selectedItemCodes.add(item);
}
public void removeItemCode(Items item)
{
if(selectedItemCodes.contains(item))
selectedItemCodes.remove(item);
}