我希望使用lv.getCheckedItemIds()。length来获取所选项目的总和。 似乎ArrayAdapter不支持getCheckedItemIds(),对吗?
private void InitListView(int pos) {
List<String> msgList = getSMS(pos);
ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, msgList);
lv.setAdapter(adapter2);
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
SetSelectedAndTotal();
}
});
}
private void SetSelectedAndTotal(){
selectedAndTotal.setText(lv.getCheckedItemIds().length+ "/"
+ lv.getCount());
}
public List<String> getSMS(int pos) {
List<String> sms = new ArrayList<String>();
Uri uriSMSURI = Uri.parse(valueList.get(pos));
Cursor cur = getContentResolver().query(uriSMSURI, null, null, null,
null);
while (cur.moveToNext()) {
String address = cur.getString(cur.getColumnIndex("address"));
String body = cur.getString(cur.getColumnIndexOrThrow("body"));
sms.add("Number: " + address + " .Message: " + body);
}
return sms;
}
答案 0 :(得分:4)
以下是有关使用getCheckedItemIds()
的文档的摘录:
仅当选择模式未设置为CHOICE_MODE_NONE且适配器具有稳定ID时,结果才有效。 (hasStableIds()== true)
默认情况下,BaseAdapter
(及其子类ArrayAdapter
)不支持稳定项ID,因此如果要利用它,则需要创建自己的子类,返回true
来自hasStableIds()
并始终为每个元素返回getItemId()
的唯一值。
否则,您将不得不使用getCheckedItemPositions()
,在您描述的用例中,如果没有额外的工作,您将提供相同的答案。