android – 从多个选择ListView返回值

前端之家收集整理的这篇文章主要介绍了android – 从多个选择ListView返回值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑:好的,我找到了一个解决方案.不知道这是正确的解决方案,但它的工作正常.添加到以下代码.

我试图允许用户从清单中选择一些目录,并在点击“提交”按钮时返回.这是我的代码片段.它使用/ sdcard /上的所有目录填充ListView,并在提交时初始选择(我选择的是多少),日志显示返回的正确选择.但是,如果我取消选中项目,然后再次单击“提交”,它仍然显示为全部被选中.我需要写一个处理程序来取消选中项目吗?我以为这是由choiceMode选择照顾的?谢谢!

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)]);

            }                
        }
    });

解决方法

我知道你找到了一个适合你的解决方案,但更简单和更简单的解决方案大部分时间都可能是这样的(我想要保留选中元素的所有id):

(在我的ListActivity):

SparseBooleanArray selectedPos = getListView()
        .getCheckedItemPositions();

ListAdapter lAdapter = getListAdapter();
List<Long> ids = new LinkedList<Long>();
    for (int i = 0; i < lAdapter.getCount(); i++) {
    if (selectedPos.get(i)) {
        ids.add(lAdapter.getItemId(i));
    }
}
原文链接:https://www.f2er.com/android/313634.html

猜你在找的Android相关文章