我已将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,问题是
那么可以管理它吗?
我的意思是可以在转换视图监听器上设置选择的项目吗?
答案 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;
}