Android ListView ausgewähltes Element bleibt markiert
Ich habe eine XML
mit zwei ListView
man mit einer Liste von Kunden gefüllt, die von einer select-Abfrage (lv_cli
) und die andere mit den Angaben des Mandanten ausgewählt (lv_cli_det
).
Ich möchte, um die client-Auswahl in der lv_cli
während der lv_cli_det
zeigen die details.
XML:
<ListView
android:id="@+id/cli_lista"
android:layout_width="512dp"
android:layout_height="wrap_content"
android:fadeScrollbars="false"
>
</ListView>
<ListView
android:id="@+id/cli_lista_det"
android:layout_width="512dp"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/cli_lista"
android:fadeScrollbars="false" >
</ListView>
Java:
Cursor cursor = db.rawQuery("Select NrCl||';'||Nome From Clientes", null);
final ListView t = (ListView)findViewById(R.id.cli_lista);
ArrayAdapter<String> myarrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, listItems);
t.setAdapter(myarrayAdapter);
final ListView td = (ListView)findViewById(R.id.cli_lista_detalhe);
final ArrayAdapter<String> myarrayAdapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, listItems2);
t.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String item = ((TextView)view).getText().toString();
String[] strArray = item.split("\\;");
cli.load(strArray[0].toString());
td.setAdapter(myarrayAdapter2);
listItems2.clear();
listItems2.add("Nome: " + cli.getNome());
listItems2.add("Morada: " + cli.getMorada());
listItems2.add("Localidade: " + cli.getLoca());
listItems2.add("Código Postal: " + cli.getCp());
listItems2.add("Pais: " + cli.getPais());
listItems2.add("Nif: " + cli.getNif());
listItems2.add("Tel: " + cli.getTel());
listItems2.add("Tlm: " + cli.getTlm());
listItems2.add("Tipo Preço: " + cli.getTipoPvn());
listItems2.add("Cond. Pagamento: " + cli.getCpg());
listItems2.add("Obs: " + cli.getObs());
td.setAdapter(myarrayAdapter2);
myarrayAdapter2.notifyDataSetChanged();
}
});
InformationsquelleAutor der Frage Celta | 2013-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Halten die Farbe des listview-Elements, wenn Sie darauf klicken, fügen Sie die folgende Zeile in Ihre listview-Element layout:
Dann definieren
bg_key.xml
imdrawable
Ordner wie diesem:Schließlich sind diese in Ihren
ListView
onClickListener
:Diese Weise wird nur ein item color-ausgewählt ist jederzeit möglich. Sie definieren Ihre Farbwerte in
res/values/colors.xml
mit so etwas wie dies:InformationsquelleAutor der Antwort Neoh
Fand den richtigen Weg. Es ist sehr einfach.
In der Ressource beschreiben, die folgenden:
(oder Sie können eine Ressource link statt Farbe, Wert)
Programmatischen:
Modus kann einer der folgenden sein: AbsListView.CHOICE_MODE_SINGLE, AbsListView.CHOICE_MODE_MULTIPLE, AbsListView.CHOICE_MODE_NONE (Standard)
(AbsListView ist die abstrakte Vorfahren für die ListView-Klasse)
P. S. Manipulationen mit onItemClick und ändern anzeigen hintergrund sind Bankrott, weil der Blick selbst ist ein temporäres Objekt. Daher müssen Sie nicht verfolgen, ein Blick.
Wenn unsere Liste ist lang genug, die Ansichten im Zusammenhang mit gescrollt out-Elemente werden entfernt, von Hierarchie und werden erneut erstellt, wenn die Elemente werden wieder angezeigt (mit zwischengespeicherten Anzeige-Optionen, wie hintergrund -). So, das Bild, das wir verfolgt haben werden ist jetzt nicht auf einen tatsächlichen Blick auf das Element, und ändern Sie seinen hintergrund nichts tut, um das aktuelle Element anzuzeigen. Als Ergebnis haben wir mehrere Elemente ausgewählt werden.
InformationsquelleAutor der Antwort AJG
Vielleicht möchten Sie vielleicht zu speichern, wird der aktuell ausgewählte element in eine Globale variable mit dem index i.
InformationsquelleAutor der Antwort Chris623
Simple Art und Weise ist,wenn Sie mit einer listview in eine xml-verwenden Sie diese Attribute auf Ihre listview,
wenn nicht die Verwendung von xml,durch ein Programm
InformationsquelleAutor der Antwort Ashana.Jackol
Müssen Sie Selektor wie:
Einstellen und dann
android:choiceMode="singleChoice"
zu Ihrem ListView.InformationsquelleAutor der Antwort Крум Илиев
Von Avinash Kumar Pankaj Beispiel
dann bei oncreate-Methode
dann onlistitemclick-Methode schrieb ich
Es funktionierte für mich. Danke.
Ersetzte ich
zu
ist und der code funktionierte auch.
Ist es notwendig, die xml-Dateien 'Farben' und 'bg_key' aus den vorherigen Beispielen, sowie auch als ListView-Attribut android:background="@drawable/bg_key"
Mauro
InformationsquelleAutor der Antwort Mauro Simoes
*bitte seien Sie sicher, es gibt keine Restwelligkeit in Ihrem root-layout der list-view-container
fügen Sie diese Zeile in der Listen-Ansicht
hier ist die "background_listview.xml" Datei
den Farben, verwendet in der background_listview.xml Datei :
nachdem diese
InformationsquelleAutor der Antwort ShahinFasihi
Einer Weise, die Sie dies tun kann, ist zu verfolgen die aktuelle position in Ihre Tätigkeit:
Nun, werden Sie sicher, dass Sie eine ID zuweisen übergeordneten Layouts (linearLayout, boxLayout, relativeLayout, .. Was auch immer Sie bevorzugen) für Ihre Liste.
Dann in Ihrer Listenansicht können Sie etwas Wie das hier tun:
Grundsätzlich, man muss nur die hilight Farbe auf das layout als hintergrund, wenn es entspricht Ihrer aktuellen position.
Beachten Sie, wie setze ich ein drawable hintergrund-Ressource, wenn das Element nicht ausgewählt ist. Dies könnte in Ihrem Fall anders (da du kein code gepostet). In meinem Fall drawable ist ein Selektor, das macht sicher, dass der Artikel hi-leuchtet, wenn Sie gedrückt werden.
InformationsquelleAutor der Antwort Tristan Vanderaerden
Verwenden Sie die id statt:
Dies ist die einfachste Methode handhaben kann, auch wenn die Liste ist lang:
Und dann in deinem onclicklistener:
InformationsquelleAutor der Antwort Wasiun A. Khan