Android Checkbox Listenansicht alle auswählen (deaktivieren / aktivieren)

Ich möchte alle Kontrollkästchen in der Listenansicht deaktivieren / aktivieren. Eigentlich möchten Sie das gesamte Verhalten auswählen, indem Sie auf das oberste Kontrollkästchen klicken.

Vielen Dank

   

Dies ist, was schließlich für mich funktionierte, wo ich einen Cursor-Adapter, nicht nur ein ArrayListAdapter für meine Listenelemente verwende:

 final ListView list = getListView(); for ( int i=0; i< getListAdapter().getCount(); i++ ) { list.setItemChecked(i, true); } 

list.getChildCount funktioniert nicht, weil es scheinbar nur zählt, was sofort gezeichnet wurde (nicht alles, was nicht auf dem Bildschirm angezeigt wird). childCount kann also nur aus 6 oder 8 Elementen bestehen, wenn die gesamte Liste aus 100 oder mehr Elementen besteht. Auch, da ich list.setItemChecked verwenden list.setItemChecked , um die Elemente zu "bleiben" - zumindest in meinem Fall, wo meine Listenelemente Instanzen von CheckedTextView .

 for(int i=0; i < listView.getChildCount(); i++){ RelativeLayout itemLayout = (RelativeLayout)listView.getChildAt(i); CheckBox cb = (CheckBox)itemLayout.findViewById(R.id.MyListViewCheckBox); cb.setChecked(true); } 

Sie müssen diesen Code bearbeiten, um sowohl das Aktivieren als auch das Deaktivieren zu ermöglichen, aber ich hoffe, Sie haben die Idee!

Außerdem wird nur jedes Kontrollkästchen überprüft. Stellen Sie sicher, dass Sie eine ID oder ein Objekt aus Ihrer Liste zurückgeben, um die Daten an anderer Stelle zu senden / speichern.

Ich denke, Sie sollten diese langwierige Aufgabe aus dem UI-Thread ausführen. Wenn Sie in OnClickListener auf die Schaltfläche klicken:

 new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < list.getAdapter().getCount(); i++) { final int position = i; mHandler.post(new Runnable() { @Override public void run() { list.setItemChecked(pos, true); } }); } } }).start(); 

und in onCreate ():

 this.mHandler = new Handler(); 

Jedes Element in der Listenansicht sollte Checkable wie CheckableRelativeLayout sein, das die Checkable-Schnittstelle implementiert.

Fügen Sie einfach einen weiteren Parameter im Adapter als hinzu

 Boolean Ex.MyAdapter adapter = new Save_Weight_Adapter(this, R.layout.layoutname, array, false); listview.setAdapter(adapter); 

Wählen Sie alle Schaltfläche klicken Sie auf Listener diesen Code hinzufügen

 MyAdapter adapter = new Save_Weight_Adapter(this, R.layout.layoutname, array, true); listview.setAdapter(adapter); 

und check-in adpater

 if(chk) { blue_check.setVisibility(View.VISIBLE); } else { blue_check.setVisibility(View.GONE); }