kco*_*ock 10 android listview multiple-select
编辑:好的,我找到了解决方案.不知道这是正确的解决方案,但它确实可以正常工作.添加到下面的代码中.
我正在尝试允许用户从核对表中选择多个目录,并在单击"提交"按钮时返回它们.这是我的代码片段.它使用/ sdcard /上的所有目录填充ListView,并且当我提交时,对于初始选择(无论我选择多少),日志显示返回的正确选项.但是,如果我取消选中一个项目,然后再次点击"提交",它仍会显示所有内容都被选中.我是否需要编写处理程序来取消选中项目?我认为这是由选择模式选择照顾的?谢谢!
private SparseBooleanArray a;
directoryList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, directoryArray));
submitButton = (Button)findViewById(R.id.submit_button);
submitButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
a = new SparseBooleanArray();
a.clear();
a = directoryList.getCheckedItemPositions();
for (int i = 0; i < a.size(); i++)
{
//added if statement to check for true. The SparseBooleanArray
//seems to maintain the keys for the checked items, but it sets
//the value to false. Adding a boolean check returns the correct result.
if(a.valueAt(i) == true)
Log.v("Returned ", directoryArray[a.keyAt(i)]);
}
}
});
Run Code Online (Sandbox Code Playgroud)
进行了更多调试并找到了适合我的解决方案。编辑成上面的代码。由于某种原因,SparseBooleanArray 本身并没有清空;它维护已检查的框的密钥。然而,当调用 getCheckedItemPositions() 时,它将 VALUE 设置为 false。所以键仍然在返回的数组中,但它的值为 false。只有选中的框才会被标记为 true 值。
| 归档时间: |
|
| 查看次数: |
7972 次 |
| 最近记录: |