多项选择ListView - 获取所有选中的项目

时间:2013-07-02 15:27:29

标签: android android-arrayadapter

我刚开始使用Adapters,我尝试制作一个简单的应用程序,显示一个可检查的字符串列表和一个按钮。单击该按钮后,它将在TextView小部件中显示下面的所有已检查项目。

public class Checklist extends ListActivity {

private String[] items={"Hi","My","Name","is","Adrian"};
ListView lv; 
Button btn;
TextView tv;

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_checklist);

    lv = (ListView) findViewById(android.R.id.list);
    btn = (Button) findViewById(R.id.button1);
    tv = (TextView) findViewById(R.id.textView);

    final ArrayAdapter<String> ad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, items);
    lv.setAdapter(ad);



    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            long[] ids = lv.getCheckedItemIds();
            String s = "";

            for (int i=0; i<ids.length;i++) {
                s=s+ids[i]+"\n";
            }
            tv.setText(s);
    }
    });
}

}

我已经提出了这个代码但是不想工作,因为这个数组

long[] ids = lv.getCheckedItemIds();

实际上并没有获得任何值。所以我查看了API,它说适配器

final ArrayAdapter<String> ad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, items);

必须具有稳定的ID。然后我也检查了它,并且适配器没有稳定的ID

hasStableIDs() == false

我该如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:0)

你需要做的是,而不是像使用long[] ids一样使用数组,你必须创建一个SparseBooleanArray对象,就像这样SparseBooleanArray sparseBooleanArray = your_list.getCheckedItemPositions();