2012-04-11 12 views
0

Ich versuche, die Elemente zu überprüfen, die in einem ListView überprüft werden. Das Problem hier ist, dass, wenn ich versuche, das Element zu bekommen, nachdem ich eins deaktiviert habe, es alle Elemente anzeigt, die geprüft und auch nicht markiert sind. Wenn ich zum Beispiel die Optionen A, B und C überprüfe und die Liste der überprüften Elemente abrufe, ergibt dies 3, und wenn ich versuche, Option B zu deaktivieren, bekomme ich immer noch das Ergebnis 3. Hier mein Code:Wählen Sie die markierten Elemente in einer ListView, nachdem Sie eine der CheckBoxen deaktiviert haben?

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

Wie Sie markierten Produkte bekommen die Liste sind benutzen? – Macarse

+0

Überprüfen Sie diesen Link http://www.vogella.de/articles/AndroidListView/article.html (Thema Nr. 8. Tutorial: Domain-Modell und Zeilen Interaktion) –

Antwort

1

ich weiß nicht, wie Sie die markierten Elemente erhalten, aber Sie sollten die Methode getCheckedItemPositions() bekommen die Position durch den Benutzer im ListView geprüft verwenden:

@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

ehrfürchtig Alter Dank .... funktioniert super ... – kAnNaN

1

Sind Sie sicher, dass diese korrekt funktioniert?

Denn, so weit ich weiß, müssen Sie checkedPositions.valueAt(i) anstelle von checkedPositions.get(i)

Verwandte Themen