Android 更新GetCheckEditePositions()

Android 更新GetCheckEditePositions(),android,listview,Android,Listview,我正在使用带有复选框的列表视图,并将其设置为multi_choice 如果我使用一次性GetCheckItemPositions来获取选中的listview项,那么一切都可以正常工作 但是,如果我再次这样做,并取消选中其中一项,它仍然被视为已选中。 我只能将更多项目添加到“已选中”。如何解决这个问题 sp = new SparseBooleanArray(); lTransfer = new ArrayList<String>(); ListView

我正在使用带有复选框的列表视图,并将其设置为multi_choice

如果我使用一次性GetCheckItemPositions来获取选中的listview项,那么一切都可以正常工作

但是,如果我再次这样做,并取消选中其中一项,它仍然被视为已选中。 我只能将更多项目添加到“已选中”。如何解决这个问题

sp = new SparseBooleanArray();
        lTransfer = new ArrayList<String>();
        ListView info = (ListView)findViewById(R.id.info);
        sp = info.getCheckedItemPositions();    
        Log.d("Watcher","Arraysize:" + sp.size());
        for(int i = 0; i< sp.size();i++){
            Log.d("Watcher","Arrayfound:" + info.getAdapter().getItem(sp.keyAt(i)).toString().split(":")[0]);
            lTransfer.add(info.getAdapter().getItem(sp.keyAt(i)).toString().split(":")[0]);
        }


public void updateInfo(){
    ListView info = (ListView)findViewById(R.id.info);
    info.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    info.setItemsCanFocus(false);
    info.setOnItemClickListener(new InfoListener());

    lSpin = new ArrayAdapter<String>(this, R.layout.list_item, lToAdd);         
    info.setAdapter(lSpin);   
}
sp=newsparsebooleanarray();
LTTransfer=新的ArrayList();
ListView信息=(ListView)findViewById(R.id.info);
sp=info.getCheckedItemPositions();
Log.d(“观察者”,“数组化:”+sp.size());
对于(int i=0;i
我曾经遇到过同样的问题。。。因此,创建类似于multi_choice listview的布局,并在自定义适配器中充气,并在适配器本身中注册类似OnClickListener()listener的事件。

我已这样解决它:

for(int i = 0; i< sp.size();i++){
    if(sp.valueAt(i)==true){
                Log.d("Watcher","Arrayfound:" + info.getAdapter().getItem(sp.keyAt(i)).toString().split(":")[0]);
                lTransfer.add(info.getAdapter().getItem(sp.keyAt(i)).toString().split(":")[0]);
                }
}
for(int i=0;i
您正在使用自定义适配器…我从未使用过ArrayAdapter,但经常使用自定义适配器。。。如果你能告诉我两件事,我可以给你答案。第一个是你可以为你的复选框设置回拨,第二个是当复选框被选中或取消选中时,你有复选框的位置。我可以为适配器调用SetNotifionChange。如果你尝试过,我认为它不会工作。只需在listview中选取50个元素,随机检查元素,然后滚动listview即可。检查是否重置复选框检查或任何随机检查是否存在。。。。实际上,我在定制适配器中遇到了这个问题。该项处于选中状态,但不会在选中或复选框自动更改其值时返回。请看一下这个链接。