0

我刚刚开始使用适配器,我尝试制作一个简单的应用程序,它显示一个可检查的字符串列表和一个按钮。单击按钮后,它会在 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

我该如何解决这个问题?

谢谢

4

1 回答 1

0

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

于 2016-04-06T14:34:58.070 回答