2016-05-09 9 views
2

Ich habe eine ListView, die ich möchte, dass das angeklickte Element eine Hintergrundfarbe hat, um anzuzeigen, welches Element gerade ausgewählt ist. Ich habe erreicht, dass durch eine Auswahlfeld AngabelistView-Elemente, die nach dem Klicken markiert bleiben sollen

<ListView 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:id="@+id/sub_arguments_listView" 
    android:layout_weight="1" 
    android:listSelector="@drawable/list_selector" 
    android:choiceMode="singleChoice" 
    android:clickable="true"/> 

Und die list_selector.xml ist:

<?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/seperator_color" /> 
    <item android:state_focused="true" android:drawable="@color/seperator_color" /> 
    <item android:state_activated="true" android:drawable="@color/seperator_color" /> 
    <item android:state_selected="true" android:drawable="@color/seperator_color" /> 
    <item android:state_active="true" android:drawable="@color/seperator_color" /> 
    <item android:drawable="@color/seperator_color" /> 
</selector> 

Ich habe ein hinzugefügt ListView.onItemClickListener():

public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
{ 
    String text ="sometext"; 
    ((TextView)mMainView.findViewById(R.id.sub_argument_text)).setText(text); 
} 

Dies funktioniert gut und wie erwartet, solange die Variable "text" einen kurzen Inhalt hat. Das Problem, das ich habe, ist, wenn der Inhalt der Variable "Text" ein langer Text ist, dann ist die TextView in Ordnung, aber das ausgewählte Element in der ListView wird aus irgendeinem Grund den Hintergrund (zurück zu transparent) verlieren (meine Vermutung ist die Fokus ist verloren). Wenn ich erneut auf denselben Gegenstand klicke, bleibt der Hintergrund und der Gegenstand wird immer noch hervorgehoben. Bitte beachten Sie auch, dass ich zwei Android-Geräte:

  1. A Eibisch 5,0, die ein schnelles Gerät ist. Und ich sehe das Problem nicht.
  2. Die zweite ist ein 4,2 und relativ langsames Gerät, das dieses Problem zeigt.

Was fehlt mir? Wie kann ich das angeklickte Element in der listView so lange hervorgehoben halten, bis ein anderes Objekt angeklickt wird?

Dank

+0

machen Listenansicht die Artikel clikable in der Adapterklasse Android: focusable = "f als " android: focusableInTouchMode =" false "android: klickbar =" false " –

+0

Ok. Ich habe das klickbare Attribut entfernt, habe aber immer noch das gleiche Problem? – c4207c

+0

Sie nicht das klickbare aus Listview entfernen. Ich spreche über Adapterklassenansichten –

Antwort

2

Try this,

public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
    { 

     listView.setItemChecked(position, true); 

    } 

Dies kann hilft Ihnen.

Verwandte Themen