1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Listview mit Markierung

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Gibbsnich, 12.07.2011.

  1. Gibbsnich, 12.07.2011 #1
    Gibbsnich

    Gibbsnich Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    56
    Erhaltene Danke:
    0
    Registriert seit:
    22.06.2010
    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:
     
  2. java4life, 12.07.2011 #2
    java4life

    java4life Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    1
    Registriert seit:
    23.01.2011
    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: 12.07.2011
  3. Gibbsnich, 12.07.2011 #3
    Gibbsnich

    Gibbsnich Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    56
    Erhaltene Danke:
    0
    Registriert seit:
    22.06.2010
    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?
     
  4. mrwerner, 12.07.2011 #4
    mrwerner

    mrwerner Android-Hilfe.de Mitglied

    Beiträge:
    134
    Erhaltene Danke:
    10
    Registriert seit:
    25.07.2010
    Phone:
    HTC Evo 3D
    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?
     
  5. java4life, 13.07.2011 #5
    java4life

    java4life Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    1
    Registriert seit:
    23.01.2011
    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...
     
  6. Gibbsnich, 13.07.2011 #6
    Gibbsnich

    Gibbsnich Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    56
    Erhaltene Danke:
    0
    Registriert seit:
    22.06.2010
    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:
     

Diese Seite empfehlen