アダプターを使い始めたばかりで、チェック可能な文字列のリストとボタンを表示する簡単なアプリケーションを作成しようとしました。ボタンをクリックすると、その下にあるすべてのチェック済みアイテムが 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
どうすればその問題に取り組むことができますか?
ありがとう