2012-04-11 3 views
0

私はListViewでチェックされている項目を取得しようとしています。ここで問題となるのは、チェックを外した後にアイテムを取得しようとすると、チェックされているすべての要素が表示され、チェックが外されているということです。たとえば、オプションA、B、Cをチェックしてチェック項目のリストを取得した場合は3となり、オプションBのチェックを外しても、結果は3になります。CheckBoxのいずれかのチェックボックスをオフにした後、ListViewのチェック項目を選択しますか?

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); 

}} 
+0

の代わりにcheckedPositions.valueAt(i)を使用する必要がありますか? – Macarse

+0

このリンクをチェックしてくださいhttp://www.vogella.de/articles/AndroidListView/article.html(トピック番号8.チュートリアル:ドメインモデルと行のやりとり) –

答えて

1

私はあなたがチェックされた項目を取得する方法を知りませんが、ListViewに、ユーザによって確認された位置を取得する方法getCheckedItemPositions()を使用する必要があります。

@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(); 
     // ... 
}} 
+0

すごくおいしい.... – kAnNaN

1

あなたは、これが正しく動作していますか?

ので、私の知る限り、あなたはどのようにチェックされた項目のリストを取得しているcheckedPositions.get(i)

関連する問題