ListView模式是多个但不选择项目

时间:2014-08-29 09:15:43

标签: android select toast multiple-choice

我已将ListView选择模式设置如下:

 listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

但是在选择了一些项目并尝试Toast所选项目后,它会显示空字符串。

我如何敬酒所选物品:

 String selected = "";
    int cntChoice = listView.getCount();

    SparseBooleanArray sparseBooleanArray = listView.getCheckedItemPositions();
    for (int i = 0; i < cntChoice; i++) {
        if (sparseBooleanArray.get(i)) {
            selected +=listView.getItemAtPosition(i).toString() + "\n";
        }
    }
    Toast.makeText(getApplicationContext(),selected,Toast.LENGTH_SHORT).show();

我在适配器上为转换视图设置了Listener,问题是

那么可以管理它吗?

我的意思是可以在转换视图监听器上设置选择的项目吗?

2 个答案:

答案 0 :(得分:0)

sparseBooleanArray仅显示所选项目的位置。你应该从绑定到listview的数组或游标中获取数据。 例如,如果您有光标,则应使用cursor.moveToPosition( item )

试试这个页面:

http://www.yogeshblogspot.com/how-to-get-selected-items-from-multi-select-list-view/

答案 1 :(得分:0)

问题是,当我有转换视图的点击监听器时,它没有自动选择项目,所以我需要手动完成

为此,我们需要Map来存储位置

的所选项目
private Map<Integer, String> selectedItems=new HashMap<Integer,String>;

所以我们应该在适配器上执行此操作:

 convertView.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                if (!selectedItems.containsKey(position))
                    selectedItems.put(position, holder.text.getText().toString());
                else
                    selectedItems.remove(position);
            }
        });

并通过调用此get项目选择文本:

 public String getSelectedItems() {
    Iterator<Integer> iterator = selectedItems.keySet().iterator();
    String selected = "";
    while (iterator.hasNext()) {
        int position = iterator.next();
        selected += selectedItems.get(position) + "\n";
    }
    return selected;
}