Android ArrayAdapter<;字符串>;不';不支持getCheckedItemIds()?
我希望使用lv.getCheckedItemIds().length来获取所选项目的总和。 ArrayAdapter似乎不支持getCheckedItemIds(),对吗Android ArrayAdapter<;字符串>;不';不支持getCheckedItemIds()?,android,Android,我希望使用lv.getCheckedItemIds().length来获取所选项目的总和。 ArrayAdapter似乎不支持getCheckedItemIds(),对吗 private void InitListView(int pos){ 列表msgList=getSMS(pos); ArrayAdapter适配器2=新的ArrayAdapter(此, android.R.layout.simple_list_item_multiple_Selection,msgList); 低压设置适配器
private void InitListView(int pos){
列表msgList=getSMS(pos);
ArrayAdapter适配器2=新的ArrayAdapter(此,
android.R.layout.simple_list_item_multiple_Selection,msgList);
低压设置适配器(适配器2);
lv.setChoiceMode(ListView.CHOICE\u MODE\u MULTIPLE);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
SetSelectedAndTotal();
}
});
}
私有void setselected和total(){
selectedAndTotal.setText(lv.getCheckedItemIds().length+“/”
+lv.getCount());
}
公共列表getSMS(int pos){
列表sms=新的ArrayList();
urimsuri=Uri.parse(valueList.get(pos));
Cursor cur=getContentResolver().query(urimsuri,null,null,
无效);
while(cur.moveToNext()){
字符串地址=cur.getString(cur.getColumnIndex(“地址”);
String body=cur.getString(cur.getColumnIndexOrThrow(“body”);
短信添加(“号码:+地址+”。短信:+正文);
}
回复短信;
}
以下是有关使用getCheckedItemIds()
的文档中的一个片段:
仅当choice mode未设置为choice_mode_NONE且适配器具有稳定的ID时,结果才有效。(HassTableId()==true)
默认情况下,BaseAdapter
(以及它的子类ArrayAdapter
)不支持稳定的项目ID,因此如果要利用它,您需要创建自己的子类,该子类从hasstableID()
返回true
,并始终从getItemId()
为每个元素返回唯一的值
否则,您将不得不使用
getCheckedItemPositions()
,在您描述的用例中,它将提供与您需要的答案相同的答案,而无需额外的工作。以下是有关使用getCheckedItemIds()
的文档片段:
仅当choice mode未设置为choice_mode_NONE且适配器具有稳定的ID时,结果才有效。(HassTableId()==true)
默认情况下,BaseAdapter
(以及它的子类ArrayAdapter
)不支持稳定的项目ID,因此如果要利用它,您需要创建自己的子类,该子类从hasstableID()
返回true
,并始终从getItemId()
为每个元素返回唯一的值
否则,您将不得不使用getCheckedItemPositions()
,在您描述的用例中,它将提供您所需要的相同答案,而无需额外的工作
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;
}