2012-04-11 17 views
3

Ich habe ein Problem in meinem ListView. Ich möchte den Hintergrund des ausgewählten Elements ändern, wenn ich es auf ein benutzerdefiniertes Zeichenformat auswähle, das ich habe, aber es funktioniert nicht.ListView ausgewählter Artikel ausziehbar

Ich möchte wie im Bild um diesen Effekt haben die SelectedItem

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" 
      android:drawable="@drawable/selected_item"/> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 

Und dies ist der Text von list_row

<!-- this layout is used to view row of category list and resturant list --> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/txt_category_row" 
    android:gravity="center" 
    android:layout_width="match_parent" 
    android:textColor="@color/BLACK" 
    android:layout_height="55dp" 
    android:padding="10dp" 
    android:text="@string/hello" 
    android:layout_marginTop="5dp" 

    android:textAppearance="?android:attr/textAppearanceLarge" /> 

Und das Listview code.xml zu sein:

<ListView android:id="@+id/list_category" 
    android:layout_alignParentLeft="true" 
    android:layout_height="fill_parent" 
    android:layout_width="184dp" 
    android:dividerHeight="2px" 
    android:background="@android:color/transparent" 
    android:cacheColorHint="@android:color/transparent" 
    android:layout_marginTop="5dp" 
    android:listSelector="@drawable/list_selector" 
    android:divider="@color/Gray" > 

Antwort

-2
dynamicListView.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     //arg1 will give you that view 
     arg1.setBackgroundColor(Color.BLUE); 
    } 
}); 
+0

es funktioniert, aber wenn ich ..can u ein anderes Element der brevious Ansicht Aufenthalt ausgewählt wählen helfen – Basant

10

Im Touch-Modus gibt es keinen ausgewählten oder fokussierten Zustand.

Sie können jedoch einen überprüften Status haben (auch ohne ein Kontrollkästchen) und verwenden, um Eigenschaften bei "Auswahl" zu ändern. In Ihrem Java-Code, wo Sie richten Sie Ihre Liste angezeigt werden diese Zeile hinzufügen, nachdem Sie die Listenansicht zu definieren:

getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

dann in Ihre Zustandsliste XML dies ändern:

android:state_selected="true" 

dazu:

android:state_activated="true" 

So, jetzt sollten Sie haben:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_activated="true" 
     android:drawable="@drawable/selected_item"/> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 

Und schließlich, stellen Sie den Hintergrund für Ihre Reihe im Hinblick auf Ihre Wähler-Datei zu verweisen:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/txt_category_row" 
    android:gravity="center" 
    android:layout_width="match_parent" 
    android:textColor="@color/BLACK" 
    android:layout_height="55dp" 
    android:padding="10dp" 
    android:text="@string/hello" 
    android:layout_marginTop="5dp" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:background="@drawable/item_selector" /> 

Sie habe ich nicht verwendet, einen Namen für die Landesliste XML geben so einfach „item_selector“. Sie sollten das durch den tatsächlichen Namen der Datei ersetzen.

+0

nichts mit mir arbeitet .. mein Problem, dass ich mit ihm das ausgewählte Element verlassen wollen ist neu Hintergrund, nachdem die Auswahl und wenn ich die Position ändern wird es mit ihm ändern und die Textfarbe .. bitte jede Hilfe: (( – Basant

+0

) Also wollen Sie mehrere? Daher es zu CHOICE_MODE_MULTIPLE (Ich denke, das ist der richtige, ich bin nicht zu Hause – Barak

+0

nein missverstehen Sie mich, was ich meine, das ist, wenn ich auf Artikel wähle seinen Hintergrund und Textfarbe änderte, bis ich ein anderes Einzelteil wähle das .. das neue vorgewählte Einzelteil nimmt den Effekt der Hintergrund- und Textfarbe und alter Gegenstand normal werden .. was ich jetzt habe, dass der ausgewählte Artikel nur erscheint, wenn ich es auswähle und weg bin, wenn ich meinen Finger entferne..kann du mir helfen, dieses Problem zu lösen .. danke – Basant

1

Sie sollten CheckableFrameLayout als Listenelementansicht verwenden. Sie können es hier finden - CheckableFrameLayout

Sie können sehen, dass, wenn Sie auf das Listenelement klicken, ändert Hintergrund Hintergrund zu alles, was Sie wollen.

Verwandte Themen