0

これは、複数選択アダプターを使用する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)が選択されます。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

これは、インデックス1を選択しているためです。

 this.list.setItemChecked(1, true); // selects C

挿入と並べ替えを行った後、Bインデックス付きのアイテムです1

これを試して

this.list.setItemChecked(this.list.indexOf("c"),true);
于 2013-01-06T11:55:39.707 に答える