ListView highlighten und selektieren

  • Hey folks, ich habe eine ListView mit ein paar wenigen Elementen und möchte gerne mit einem OnClickListener das angeklickte Element highlghiten und selektiert lassen.


    Bisher waren aber alle meine Mühen vergeblich.
    was ich versucht habe ist...

    Java
    listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    listview.setSelection(position);
    Java
    listview.setItemChecked(position, true);

    beides tut weder dauerhaft highlighten noch selektieren, da ich direkt nach dem selektieren das aktuell selektierte Objekt wieder abrufe und immer NULL zurück bekomme.

  • ich habe natürlich alle 3 Posts schon durch die du mir freundlicherweise kurz ergooglet hast.


    der einzige davon der eine "aktzeptierte Antwort" hat ist der erste und der funktioniert ebenfalls nicht, obwohl mein Compiler keine Fehler anzeigt.


    Java
    ecb.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
          ecb.setBackground(mContext.getResources().getDrawable(R.drawable.para_listview_bg));


    para_listview_bg.xml

    Sobald, er zu dem Codesegment "ecb.setBackground" kommt stürzt die App ab.
    EDIT: ach und ich habe keine XML layout File, die Listview ist dynamisch im Code erstellt.

  • Solution:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • ich stehe gerade vor dem selben "Problem". Ich könnte einfach die hintergrundfarbe ändern, jedoch hab ich da keine lust drauf.
    Kann nicht einfach der standard selektor genutzt werden den Android bei einem einfach klick nutzt und das item dann als "angeklickt" markieren und mit der selben farbe markiert lassen bis ein anderes item markiert wird?

  • Puh, gute Frage... nachste Frage ! xD


    Also, ich hab mich so an dem doofen Teil geärgert, das ich an der Lösung die das Video bietet sehr froh war, und soweit funktioniert alles wie ich es mir vorgestellt hab.


    setSelection() - wird farblich markiert
    das angeklickte Item bleibt farblich und im Index markiert - getSelectedItem() o. getSelectedItemPos()

  • Ok Problem solved.


    Stylefile mit den states:

    XML: list_selector.xml
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_activated="false" android:drawable="@android:color/transparent" />
        <item android:state_activated="true" android:drawable="@color/holo_blue_light" />
    </selector>


    Layout mit der ListView:

    Nun muss ja noch irgendwo der Selektor gesetzt werden. Missverständlicherweise dachte ich immer, dass ich den in der ListView mit setSelector() setzen muss, falsch.
    In meinem Adapter wird der Hintergrund des Items (In meinem Fall "TreeListItem") mit dem selektor befüllt.

    Sobald nun auf ein Item geklickt wird, muss der state auf activated gesetzt werden:

    Java
    list.setOnItemClickListener(new OnItemClickListener() {
    			@Override
    			public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
    				view.setActivated(true);
    			}
    		});


    Und schon geht alles wie gewünscht :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!