0

でチェックされているアイテムを取得しようとしていますListView。ここでの問題は、チェックを外した後にアイテムを取得しようとすると、チェックされている要素とチェックされていない要素がすべて表示されることです。たとえば、オプション A、B、および C をチェックして、チェックされた項目のリストを取得すると、結果は 3 になります。次に、オプション B のチェックを外した後で試しても、結果は 3 になります。これが私のコードです。

public class ClikableList extends Activity implements OnItemClickListener{
/** Called when the activity is first created. */
ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

     lv = (ListView) findViewById(R.id.listView1); 
    lv.setAdapter(new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_multiple_choice, GENRES));
    lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    lv.setOnItemClickListener(this);


}

private static final String[] GENRES = new String[] {
    "Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama",
    "Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller"
};

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {

    //Toast.makeText(getBaseContext(),lv.getItemAtPosition(position) + " Test "+lv.getCheckedItemPositions().size(), Toast.LENGTH_SHORT).show();        
        System.out.println(lv.getItemAtPosition(position)); 
    lv.updateViewLayout(arg1, null);

}}
4

2 に答える 2

1

チェックされたアイテムを取得する方法はわかりませんが、メソッドgetCheckedItemPositions()を使用して、ユーザーがチェックした位置を取得する必要がありListViewます。

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
        SparseBooleanArray checkedPosistions = lv.getCheckedItemPositions(); // this will return a mapping of the position in the adapter and a boolean value
        String results = "";
        int count = lv.getAdapter().getCount();
        for (int i = 0; i < count; i++) {
            if (checkedPositions.get(i)) { //if true this is a checked item
                results += i + ",";
            }
        }
        Toast.makeText(this, "The checked items are :" + results,
                Toast.LENGTH_SHORT).show();
        // ...
}}
于 2012-04-11T04:58:06.240 に答える
1

これが正しく機能していると確信していますか?

私の知る限りcheckedPositions.valueAt(i)、代わりに使用する必要があるためcheckedPositions.get(i)

于 2012-05-27T01:12:08.690 に答える