これは、複数選択アダプターを使用するListViewです。
public class ExampleActivity extends ListActivity {
private ListView list;
private List<String> items;
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_example);
this.list = this.getListView();
this.items = new ArrayList<String>();
this.items.add("A");
this.items.add("C");
this.items.add("D");
this.items.add("D");
this.adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, items);
this.list.setAdapter(adapter);
this.user(); // simulating user selecting C
this.button(); // simulating user press some button who adds items to list
}
private void user() {
this.list.setItemChecked(1, true);
}
private void button() {
this.items.add("B");
Collections.sort(this.items);
this.adapter.notifyDataSetChanged();
}
}
ユーザーがC(インデックス1)を選択し、ユーザーがボタンを押してアイテムをリストと並べ替え(Bなど)に追加すると、CではなくB(新しいインデックス1)が選択されます。この問題を解決するにはどうすればよいですか?