Listview mit Markierung

Gibbsnich

Gibbsnich

Ambitioniertes Mitglied
0
Hallo,

ich habe eine ListView, die Daten mit einem SimpleCursorAdapter aus einer Datenbank holt und in einem eigenem Layout (2-zeilig) darstellt.

Was mir fehlt, ist die Anzeige des zuletzt selektierten Satzes.
Beim Berühren wird die Datenzeile hinterlegt, aber die Markeirung verschwindet wieder. Selbst beim Aktivieren der Multiple_Choice Option sieht man die Markierungen nicht.

Das kann doch kein Zauberwerk sein, oder doch? :sneaky:
 
hm,keine Ahnung,ob du das meinst,aber das selektierte Item kannst du hiermit färben:

view.setBackgroundColor(//Farbe);

Habe da glaube ich gerade was durcheinander gebracht.
Im Listener müsstest du sowas in der Art machen:

meinString.setSelected(true);

Dann dürfte da eigentlich nichts verschwinden,es sei denn du lädst irgeneine Activity/View neu.
 
Zuletzt bearbeitet:
Ich habe es schon mit this.SetSelection(id) versucht, bringt aber nichts.

Vielleicht bin ich ja auch auf dem Holzweg, daher stelle ich die Frage anderes herum:
Kann eine ListView den zuletzt selektierten Eintrag irgendwie dauerhaft als markiert darstellen oder verschwindet die Markierung immer wieder nach der Auswahl?
 
Normalerweise verschwindet der Focus sobald du mit dem Finger den Touchscreen berührst.

Wissenswertes zu diesem Thema: Touch Mode | Android Developers

Ich hätte da allerdings ein ähnliches Problem und möchte keinen eigenen Thread aufmachen:
Wenn ein ListItem zu lange ist, wird dieses wenn es den Fokus hat wie ein Laufband automatisch durchgescrollt (also die ListItem-View hat das Attribut android:ellipsize="marquee" gesetzt). Wie kann man nun den ganzen Text sehen, wenn man ein touch-only Gerät hat ohne einen Trackball oder ähnlichem?
 
Gibbsnich schrieb:
Kann eine ListView den zuletzt selektierten Eintrag irgendwie dauerhaft als markiert darstellen oder verschwindet die Markierung immer wieder nach der Auswahl?

Was genau willst du denn erreichen. Du kannst doch in dem Listener:

PHP:
private final int farbe = Color.GREEN;
//
setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, final View view,
            int position, long id) {
view.setBackgroundColor(farbe);
  });

das aktuelle selektierte Element einfärben (auch in der Farbe,als wenn es selektiert ist).
Außerdem kannst du somit (wenn du willst) auch die nachfolgenden Selektionen färben...
 
Hallo java4life,

klar kann ich die View einfärben, aber dann muss ich die Markierung auch wieder entfernen und das macht mir eigentlich viel zu viel Stress. Ich müsste ja immer den ganzen Adapter durchgehen, um eine eventuell gesetzte Markierung zu entfernen, oder ?
Spätestens wenn dann noch der Trackball ins Spiel kommt, hat man ganz schnell zu viele Markierungen...

Ich hatte gehofft, das Betriebssystem kann das übernehmen.
Aber selbst der Versuch mit:

getListView().setChoiceMode() auf Sinlge oder Multiple
und
getListView.setFocusable(true) bzw. setFocusableInTouchMode(true)

helfen mir nicht. :crying:
 

Ähnliche Themen

A
Antworten
10
Aufrufe
1.017
swa00
swa00
D
Antworten
9
Aufrufe
1.762
jogimuc
J
B
Antworten
4
Aufrufe
470
bb321
B
Zurück
Oben Unten