Listfragment Hintergrundfarbe eines Elements ändern durch Checkbox

  • Antworten:4
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 14

18.08.2014, 23:29:53 via Website

Einen Wunderschönen alle zusammen,

ich habe das Gefühl kurz vor dem Ziel zu sein und sehe nur komplizierte Lösungen für mein Problem. Daher frage ich lieber bevor ich mich an die umständliche Variante wage.

Wie im Titel genannt, möchte ich bei Statusänderung einer Checkbox die Hintergrundfarbe des dazugehörigen Listenelements ändern.

public class MyListFragment extends ListFragment implements LoaderCallbacks<Cursor> {

  public void onCreate(Bundle savedInstanceState) {

     public boolean setViewValue(View view, final Cursor c, int columnIndex) {

          public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

               //Darstellung des Listeneintrags &auml;ndern
               View x =  getListView();
               x.setBackgroundColor(Color.rgb(202, 255,112));
           }
      }
   }
}

Bisher ändert sich nur der Hintergund hinter den Listeneinträgen.

Ach, und die Listeneinträge werden mit Hilfe eines SimpleCursorAdapters aufgebaut.

Ich hoffe ich habe alle Infos mitgeliefert, wäre schön wenn mir jemand einen heißen Tipp geben könnte.

Ich bedanke mich jetzt schon mal.

Antworten
  • Forum-Beiträge: 11.135

19.08.2014, 07:43:57 via App

Du kannst das nur richtig setzen wenn du zugriff auf die Einzelnen View Elemente hast.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 14

19.08.2014, 08:18:42 via Website

Guten Morgen, vielen Dank für die Antwort.

Okay, also auf jeden Fall muss ich noch in der Manifest etwas festlegen. Hab ich das richtig verstanden?

Aber wie findet der Zugriff jetzt statt?

Antworten
  • Forum-Beiträge: 235

19.08.2014, 12:05:03 via Website

Hallo,
hätte ich etwas mehr Code, -> dann würde ich genauer ... .
Ein blick in das API (bitte mit machen.)
sag mir:
Eine ListFragment Klasse visualisiert / zeigt eine Liste von einträgern (items) welche in einem Array (Data Model) gespeichert sind und verfügen über einen Klick-Lauscher (event handler) .... nur so GROB!
Ich gehe davon aus, dass du mir in der API folgst ! ? ( etwas nach unten scrollen)
The following code demonstrates .....
Hier wird das Gesamtes View (ListView) mit einem grünem Hintergrund dargestellt.
...

<ListView android:id="@id/android:list" ....
               android:background="#00FF00"

...

Das TextView (im Fehler fall) wird rot dargestellt.

...

<TextView android:id="@id/android:empty"
               android:background="#FF0000" ...

...

Das TextView Container! -> ist also auf Einträge (Items) gesplitert / zerteilt ??? verteilt.
Wie in einer Tabelle auf Rows verteilt.
Scrolle nach unten unt lese den Row Layout Teil.
Gucke bitte in die XML Datei:

<TextView android:id="@+id/text1"
....
<TextView android:id="@+id/text2"
....

Wenn du z.B.: in dem Abschnitt:
<TextView android:id="@+id/text1"
den Hintergrund mit:
android:background="#FF0000"
festgelegt hättest, würde es rot dargestellt.
....
SO!

Deine MyListFragment Klasse erbt (wie von dir gewollt) von der ListFragment.
Dass alles, ist selbstverständlich auch im Code "reproduzierbar".
Du kannst alle Methoden der Eltern (Super) Klasse benutzen.
Die;
getSelectedItemId() Methode, liefert dir den Row Id
...
dies spiegelt sich an die dazu ständige TextView -> mit den adäquat dazu passenden id / Cursor / Array ...
Alles ist eigentlich leicht realisierbar. Einfach API "Lesen".

Klar, möchte hier nicht so .. Angeben, ... habe selber Probleme dabei!
Zeit .... Ausprobieren .... Lesen ..... Zeit .... Ausprobieren ....

NUN! ab jetzt überlasse ich es alles DIR, bzw. -> anderen, weil:
(Es ist wieder [vermute] ein Copy Paste .... Tut den du nicht verstehst ... Fall???)
Kollege!:

Du integrierst in einer Methode mit einem Rückgabewert eine weitere Methode ...

public boolean setViewValue(View view, final Cursor c, int columnIndex) {

VOR der > } < Klammer MUSS ein return -> Rückgabewertsbestätigung implementiert werden.

und .....
und ich bin RAUS!

Fazit:
Man versucht etwas behilflich zu sein - investiert Zeit dafür, .... und alles ist nur ...
um sonst.
Junge! - dein (oben) Code wird in jede IDE mit FEHLER abgemahnt.
....
Kinderkram ...

Sorry für Gramatik & Stilistik Fehler.

Antworten