Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ArrayAdapter<;字符串>;不';不支持getCheckedItemIds()?_Android - Fatal编程技术网

Android 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); 低压设置适配器

我希望使用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);
低压设置适配器(适配器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;
    }