我有一个多选listview
,我想跟踪用户选择的内容和取消选择的内容。当用户点击列表项时,我会将点击的项添加到ArrayList
中,当他们再次点击它时,我会从ArrayList
中删除该项。问题是取消选择操作(当用户点击之前已点击的项目时)再次添加到ArrayList
而不是删除。
以下是该活动onListItemClick
的代码:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CheckBox checkBox = (CheckBox) view.findViewById(R.id.chk_forEasyPayListItem);
int stringPos = 0;
selectedBiller = billerNamesArray[position];
selectedBillerAccountNumber = billerAccountsArray[position];
selectedBillerBalance = billerToPayBalances[position];
SparseBooleanArray sparseBooleanArray = lstPayMyBills.getCheckedItemPositions();
if (sparseBooleanArray != null && sparseBooleanArray.size() > 0) {
for (int index = 0; index < sparseBooleanArray.size(); index++) {
if (sparseBooleanArray.valueAt(index)) {
lstPayMyBills.setItemChecked(sparseBooleanArray.keyAt(index), true);
checkBox.setChecked(true);
selectedItems.add(new PayMyBillsListItemModel(position, selectedBiller, selectedBillerAccountNumber, selectedBillerBalance));
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "Array size is " + selectedItems.size(), Toast.LENGTH_LONG).show();
} else {
lstPayMyBills.setItemChecked(sparseBooleanArray.keyAt(index), false);
checkBox.setChecked(false);
//selectedItems.remove(new PayMyBillsListItemModel(position, selectedBiller, selectedBillerAccountNumber, selectedBillerBalance));
}
}
} else {
for (int index = 0; index < lstPayMyBills.getCount(); index++) {
lstPayMyBills.setItemChecked(index, true);
checkBox.setChecked(false);
selectedItems.remove(new PayMyBillsListItemModel(position, selectedBiller, selectedBillerAccountNumber, selectedBillerBalance));
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "Array size is " + selectedItems.size(), Toast.LENGTH_LONG).show();
}
}
}
答案 0 :(得分:0)
我认为您的问题可能是您正在创建要删除的新对象。如果你有一个&#34; A&#34;,&#34; B&#34;,&#34; C&#34;,&#34; D&#34;,&#34; B&#34;并且您调用删除(&#34; B&#34;)您的列表将是:
&#34; A&#34;,&#34; C&#34;,&#34; D&#34;,&#34; B&#34; (删除第一次出现)。我认为您必须在所选列表中查找与取消选择的对象相匹配的对象,然后将其删除。
我不确定删除新对象的行为?