2016-05-03 16 views
0

Ich habe eine benutzerdefinierte ListView mit einem benutzerdefinierten row_layout. Nach einem langen Klick erhalten Sie verschiedene Optionen aus dem Kontextmenü. Abhängig davon, welche Option der Benutzer wählt, möchte ich ein Bild/Symbol zur ausgewählten Zeile hinzufügen, um es zu markieren.Benutzerdefinierte ListView-Zeile bei ausgewählter ContextMenu-Aktion aktualisieren

Ich konnte keine Antwort finden, die genau diesen Anwendungsfall abdeckt. Ich würde einen Hinweis oder eine Hilfe oder eine Anleitung für diesen Fall schätzen.

Vielen Dank im Voraus.

Antwort

0

Egal, ich habe selbst eine Lösung gefunden. Ich habe eine boolesche Variable zu meiner ListItem - Klasse und die ImageView zur list_row_layout hinzugefügt, sowie eine ImageView zu meiner ViewHolder Klasse innerhalb der CustomAdapter Klasse. Wenn also auf ein contextItem geklickt wird, wird das boolesche Attribut auf true für das listItem gesetzt, auf das geklickt wurde.

Beispielcode:

@Override 
public boolean onContextItemSelected(MenuItem item) { 

     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 

     int itemPosition = info.position; 

     switch (item.getItemId()) { 
      case R.id.contextItem1: 

       listViewItems.get(itemPosition).setMarkerAttribute(true); 
       listView.setAdapter(new MyCustomListAdapter(context, listViewItems)); 

       return true; 
      case R.id.contextItem2: 

//do sth 
       return true; 
      case R.id.contextItem3: 
//do sth 
       return true; 
      default: 
       return super.onContextItemSelected(item); 
     } 
    } 

Hope this jemandem nützlich war, weil viele Beispiele nur ein Element Abdeckung zu entfernen ...