GridView - erstes Item zeigt keinen highlighted State an - wird zweimal erzeugt

  • Antworten:6
  • Bentwortet
Melanie Schmidt
  • Forum-Beiträge: 18

08.08.2013, 17:55:20 via Website

Hallo,

ich möchte eine Gridview mit Buttons befühlen. Dazu nutze ich einen normalen Adapter dem ich eine Liste von Objekten übergebe.
Aus diesen Objekten ziehe ich meine Daten für die Buttons, die ich in getView() erstelle.
Die Buttons haben 2 States, normal und presset. Dafür übergebe ich ein selector.xml, die für jeden State ein Drawable angeben.

Generell klappt das auch sehr gut. Mein Problem ist nun, dass für das erste Icon in der Liste und somit das erste Icon in der ListView, der highlighted State nicht angezeigt wird.

Überlege, ob dass damit zu tun hat, dass die getView mehrmals aufgerufen wird und dabei der erste Button zweimal erzeugt wird. Einmal am Anfang und einmal am Ende. Obwohl ich die Items nicht im Nachhinein noch verändere.

Hoffentlich kann mir jemand helfen, mir gehen die Ideen aus....
Danke

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

09.08.2013, 20:51:30 via Website

Schau dir mal "World of Listview" an ...dann verstehst du auch den Gridview besser da alles über Adapter läuft.

http://www.youtube.com/watch?v=wDBM6wVEO70

zu dem rest kann man nur raten bei der informationslage ;)

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Melanie Schmidt
  • Forum-Beiträge: 18

09.08.2013, 20:56:42 via Website

Hi,

Bei der Informationslage? Was brauchst du den noch für Infos?
Ich kann natürlich den ganzen Code posten aber der unterscheidet sich auch nicht von andere Beispielen.
Außer eben dass ich als Icon ein Selector übergebe für 2 States.

Antworten
Melanie Schmidt
  • Forum-Beiträge: 18

12.08.2013, 17:52:35 via Website

Hallo,

ich habe einen GridView Adapter. Als icon View nehme ich ein LinearLayout mit einer TextView und einem ImageButton. Das Icon des ImageButton soll aus einem Selector übergeben werden:

1dashBoardButtonIcon.setBackgroundDrawable(dashboardIcon.getIcon());

Selector:
1<selector >
2 <item android:drawable="@drawable/icon_pressed" android:state_pressed="true"/>
3 <item android:drawable="@drawable/icon"/>
4</selector>

Das icon wird angezeigt, nur leider mit einem grauen Hintergrund. Wenn ich jedoch im Layout des ImageButtons den Hintergrund transparent setzte, funktioniert das highlighten des ersten Buttons im Grid nicht mehr. Es funktioniert eigentlich immer nicht mehr, sobald ich ein Background attribute setzte, egal ob im xml oder im code.
Ich habe diese Probelmatik schon in anderen Foren gesehen. Da gibt es nur die Lösung den selector direkt als android:scr im ImageButton anzugeben. Das kann ich nicht, da ich mir dynamisch die Layouts aus einen library Projekten hole.

Hat jemand eine Idee?

Antworten
Andy N.
  • Forum-Beiträge: 22.375

12.08.2013, 20:35:00 via Website

Hallo Melanie,

ich denke, das kann auch in diesem Thread weiter diskutiert werden. Ich habe deinen anderen Thread daher mal hier angehängt.

Viele Grüße,
Andy


OnePlus 3 (Resurrection Remix 5.8.2)
LG G Watch

Regeln | unsere Mods & Admins

Antworten
Melanie Schmidt
  • Forum-Beiträge: 18

23.08.2013, 10:49:51 via Website

Ich habe das Problem nun gelöst, indem ich kein Button, sondern eine ImageView nehme und den Selector mittels "setBackgroundResource()" setzte. Dann funktioniert das mit den Background Images und States.

Antworten