Umgekehrte von OnItemClickListener

Z

zulu23

Neues Mitglied
0
Hallo zusammen,

Gibt es eine möglichkeit bei einer ListView abzufragen wenn ich sie loslasse?
D.h. z.b. wenn ich auf ein Item in der ListView tippe (mit hilfe von OnItemClickListener) dann ändert sich die Hintergrundfarbe des Item...wenn ich nun dieses Item wieder loslasse würde ich gerne die Farbe wieder in den ursprünglichen Zustand bringen...

Gibt es da die Möglichkeit das loslassen abzufangen?

Danke für eure Hilfe!

Gruss zulu23
 
Eine easy Lösung:

- in OnItemClickListener speicherst du dir die Item Position die gerade angetoucht wurde
(Ich würde onLongClick auch überschreiben und sie mir da auch speichern)

- Dann hängst du an den ListView noch einen onTouch Listener und reagierst da beim Release Event.

-> Release Event + Gespeicherte Position = Das was du willst.
 
hey danke euch für die super Tipps! Das über die XML habe ich auch schon probiert, funktioniert auch wunderbar aber da ich mir die Items selber über einen Adapter bastell ist diese Methode etwas zu unflexibel.

Ich werde mir mal mit dem "-> Release Event + Gespeicherte Position" austesten ob das zuverlässig funktioniert. Mit dem Release Event meintest du einfach auf das 2. Event zuwarten von OnTouch Listener? Oder gibts da unterschiedliche Event beim OnTouch Listener?

Gruss zulu23
 
Ja das musst ein wenig nachlesen.

Du hast ja viele Touchpoints die gleichzeitig gedrückt sein "könnten".
 
@monsti meint wahrscheinlich die Action motionEvent.getAction() == MotionEvent.ACTION_UP.
MotionEvent | Android Developers
Input Events | Android Developers


An deiner Stelle würde ich es lieber über die Resources machen.

Insbesondere mit einem selbst gebastelten Adapter ist es die elegantere Lösung.
Du delegierst die ganze Problematik an das System, und muss dich nicht selber darum kümmern.

Für komplexeren Layouts kann es außerdem bei den Einsatz des OnTouchListner Probleme mit den Focus geben.
Input Events | Android Developers
 
Das mit dem OnTouch Event UP funktioniert leider auch nicht wie gewünscht...den ich bekomme die Position des gedrückten Items vom OnItemClick erst wenn ich ihn wieder loslasse...dann ist ja der farbwechsel schon wieder passé...

Nun habe ich es so probiert mit einem xml:
Code:
<?xml version="1.0" encoding="utf-8"?>
<selector
      xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/muster_gelb" /> <!-- pressed -->
    <item android:state_focused="true" android:drawable="@color/weiss"/> <!-- focused      -->
   <item android:drawable="@color/muster_gruen_d" /> <!--  default --> 
          
</selector>

Das dann beim TextView das ich für jedes einzelne Item im ListView brauche so eingefügt:
Code:
    <TextView
        android:id="@+id/itemText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/titel_liste"
        android:textSize="40sp"
        android:background="@drawable/drawable_color_listview"
        android:textColor="@color/weiss"/>

da ich aber beim Aufbau mit dem Adapter des Listview die Farbe im Programm ändere scheint er darauf nicht mehr zu achten...

habt ihr vielleicht noch einen Tipp für mich?:unsure:

Gruss
zulu23
 

Ähnliche Themen

S
Antworten
17
Aufrufe
530
jogimuc
J
5
Antworten
22
Aufrufe
1.369
590239
5
M
Antworten
4
Aufrufe
1.148
swa00
swa00
Zurück
Oben Unten