Wie kann ich ein Hintergrundbild einstellen, für jedes item der ListView in Android?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
<LinearLayout
android:orientation="vertical"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="fill_parent">
<TextView
android:id="@+id/toptext"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center_vertical"
android:textStyle="bold"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:id="@+id/bottomtext"
android:singleLine="false"
/>
</LinearLayout>
</LinearLayout>
Dies ist meine aktuelle Zeile. Wenn ich ein .JPEG, und ich möchte, dass für jedes Element...wie würde ich das ändern .xml-Datei? Wo würde ich das Bild? In Vermögen?
InformationsquelleAutor TIMEX | 2010-02-16
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, um individuelle Hintergründe für jede Liste ein Element, müssen Sie deklarieren Ihre eigenen benutzerdefinierten Adapter.
Ableiten von BaseAdapter und der wichtigste Bestandteil zur Umsetzung ist die
getView(int, View, ViewGroup)
Methode.Müssen Sie verstehen, wie android-re-verwendet bereits vorhandenes Listenelement anzeigen Elemente, die beim scrollen durch eine Liste. Das bedeutet: in jedem moment in der Zeit, es werden nur so viele views generiert, wie es gesehen werden kann auf dem Bildschirm gleichzeitig.
Diese optimale Strategie nicht erzeugen zu viele Ansichten zusammen führt zu dem problem, dass Sie haben, um den hintergrund für jedes Listenelement nach Ihrer position currenty benötigt, wenn getView genannt wird. Wenn Sie versuchen würde, um den hintergrund statisch, nur, wenn die Generierung der Ansicht, es wird wieder erscheinen, vielleicht wieder angebracht, um das falsche element.
Den
getView
Methode bringt entweder ein "convertView" als zweiten parameter oder nicht (null). Wenn die Methode aufgerufen wird, eine convertView etwas, das bedeutet: "re-verwenden Sie diese Ansicht, die für die Position erforderlich, right now".Die hier verwendete Technik ist gut beschrieben in der API-demos (Abschnitt Listen) und es gibt auch ein video blog für das.
Hier ist, wie es getan werden könnte:
Das ist im Grunde es. Wenn es nur ein paar hintergrund-Zeichnungen würde ich eventuell cache Sie als gut, so dass Sie nicht haben, Lesen Sie die Ressourcen immer und immer wieder!
Spaß haben!
Halten Sie eine Liste oder ein array - was auch immer-Suiten Ihre Bedürfnisse - in den adapter und Lesen Sie in aller drawables in den Konstruktor des Adapters. Dann, wenn Sie den hintergrund festlegen, statt beim laden der Ressource gibt, verwenden Sie Ihre Liste oder array-Elemente! Aber zuerst: don ' T care über diese. Das war nur ein add-on Tipp von mir um zu verhindern, dass der adapter zu langsam beim schleudern durch Ihre Liste! Viel Glück!
Wie mache ich, dass drawable repeat-x? In CSS kann ich tun repeat-x 🙂
Hmm, meinst du wiederholen wie Fliesen? Ich glaube nicht, dass dies möglich ist, mit der
setBackground
Methode der Ansichten. Die Ansichten haben, ein hintergrund-Bild, das ist es. Aber ich könnte falsch sein... 🙂InformationsquelleAutor Zordid
Wollten Sie eine Liste anzeigen, wo jede Zeile hatte seinen eigenen hintergrund, wie dem folgenden?
In Ihrem code, Sie wahrscheinlich würde ein ListAdapter auf der Ansicht. Eine Reihe von Adaptern, die Sie erstellen können nehmen Sie in einem layout-oder view-argument. Sie sollten einfach nur um die android:background Eigenschaft für die Ansicht, dass Sie diesen Punkt zu.
Zum Beispiel, ich habe vielleicht einen ArrayAdapter wie folgt erstellt:
Natürlich, ich benutze ListView's setAdapter mit diesem adapter. In meinem item.xml - Datei, ich kann den text festlegen, der Blick itemName wie diese:
Aber ich glaube nicht, dass alle Arten von ListAdapter hat einen Konstruktor mit diesem feature. Überprüfen Sie die Dokumentation für die Art der ListAdapter, die Sie verwenden. Wenn Sie mit einem ohne dieser Konstruktor, ich glaube, Sie haben können, um eine Unterklasse der adapter-und überschreiben der adapter ist getView aufblasen, um Ihren Blick von Ihrer XML-Datei.
Habe ich das Bild hinzufügen.png in jedem res/drawable Ordner.
InformationsquelleAutor Klarth