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 に答える