Android使用ArrayList添加和删除到不同的ListView

时间:2014-06-05 20:22:26

标签: java android listview android-listview arraylist

这让我疯了。我有一个ListView和一个ArrayList作为我的适配器。 ListView模式为CHOICE_MODE_MULTIPLE,布局为simple_list_item_checked。我现在可以在ListView中选择多个项目。

我的情况:

    int length = jsonList.size();

    SparseBooleanArray checked = lv_Devices.getCheckedItemPositions();

    for (int i = 0; i <length ; i++ ){

         if (checked.get(i)) {


             onList.add(jsonList.get(i));

             jsonList.remove(i);
             lv_Devices.setItemChecked(i, false);


             length--;

        }   
    }
    adapter.notifyDataSetChanged();
    adapterOn.notifyDataSetChanged();

这是LogCat:

size of array 8 : contains [1, 2, 3, 4, 5, 6, 7, 8]  

you removed index 0  
[2, 3, 4, 5, 6, 7, 8]  


you removed index 1  
[2, 4, 5, 6, 7, 8]  


you removed index 2  
[2, 4, 6, 7, 8]  


you removed index 3  
[2, 4, 6, 8]  

从最终结果可以看出,数组正在转移索引。我想要实现的目标:获取每个选定的项目,并将其添加到其他ListView,同时从当前ListView中删除。

LogCat显示选择所有项目时会发生什么。点击按钮也会发生这种情况。对此的任何建议都是完美的。这也是我第一次使用stackoverflow。我并没有真正使用它,因为这里已经讨论了大多数编程错误。我在这个问题上遇到了困难。

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

int item = 0;

for (int i = 0; i < length; i++) {

    if (checked.get(i)) {
        onList.add(jsonList.get(item));
        jsonList.remove(item);
        lv_Devices.setItemChecked(i, false);
    }
    else {
        item++;
    }
}

它将尝试删除数组中的第一项(项目0)。如果选中该项,则会将其删除。这意味着之前项目1的项目现在是项目0,因此它将再次检查项目0。

但是,如果没有选中第0项,它将继续执行第1项,并继续做同样的事情。