Aktivieren/Deaktivieren, item-Auswahl im listview in multiple-choice-Modus
Habe ich ein listview-registriert für Kontext-Menü im multiple-choice-Modus:
private void initListViewForContextMenu(){
log.d("FilesFragment", "initListViewForContextMenu()");
ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() { ...
Das problem ist, dass nicht alle Elemente meiner Ansicht sollte auswählbar sein, nur diese zeigt ein spezielles Symbol zur Auswahl zur Verfügung. Ich weiß nicht, wie das umzusetzen, habe ich ein OnItemLongClickListener
:
getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapter, View view, int position, long id) {
Log.d("FilesFragment", "OnItemLongClickListener.onItemLongClick at pos " + position);
PfmDocument doc = (PfmDocument)adapter.getItemAtPosition(position);
if (doc.isOnBasket()){
Log.d("FilesFragment", "OnItemLongClickListener.onItemLongClick detected in basket");
ListView lv = (ListView) adapter;
lv.setItemChecked(position, false);
}
return false;
}
});
aber dieser listener wird nicht aufgerufen.
Ich habe auch versucht, eine OnLongClickListener
auf die Reihe-Blick in den adapter, aber tut das normal das klicken ist auch zu deaktivieren, auch wenn Kontext-Menü wird geschlossen (nicht im Auswahl-Modus).
if (doc.isOnBasket()){
rowView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return false; //do nothing, already in basket
}
});
//}
- Wollen Sie die Zeile mit dem speziellen Symbol wählbar oder über ein Kontextmenü (oder beide)?
- Ich brauche alle Zeilen anklickbar um zu öffnen ein Eigenschaften-Ansicht, sondern nur die Zeilen mit dem speziellen icon wählbar mit einem langen Klick (mehrfache Auswahl im Kontext-Menü). Sobald die Mehrfachauswahl gestartet wurde, werden nur die Zeilen mit dem speziellen Symbol kann angeklickt werden, um fügen Sie darunter auf den Korb. Die Besondere Ikone zeigt tatsächlich, dass das Element verfügbar ist, legt es in den Korb und, dass es nicht bereits in ihm, in anderen Worten, alle Elemente sind anklickbar, um zu sehen, Ihre details, sondern nur die nicht bereits im Warenkorb ausgewählt werden, für die man Sie in den Korb. Hoffe ich komme klar.
InformationsquelleAutor jmhostalet | 2013-01-21
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Graben sich in den android-sourcecode (AbsListview), Sie werden sehen, dass die Einstellung der choiceMode zu
MULTIPLE_MODAL
wird über das longpress. Das ist, warum Ihr listener nicht aufgerufen.Können Sie entscheiden, ob eine Ansicht ist anklickbar und mit return true/false in
isEnabled(position)
in den adapter.Den code unten löst nur der Teil, wo während der actionmode, die Elemente, die bereits Hinzugefügt, um den Korb sind nicht anklickbar.
Aber es sollte ziemlich einfach sein, deaktivieren Sie einfach das Element, das longpressed wenn es nicht ein gültiges Element.
Hoffe diese Hilfe!
In Ihrem MultiChoiceModeListener:
Und dann in Ihre eigene adapter: