P
Panikmeister
Neues Mitglied
- 0
Halli Hallo,
ich werde langsam wahnsinnig
Irgendwie schaffe ich es nicht, die selektierten Items meiner Listview richtig auszulesen. Die Funktionen getSelectedItem(Id/Position) ergeben alle null und -1.
getCheckedItemPosition() ebenso -1. Komischerweise gibt getCheckedItemsCount die richtige Anzahl an, also es sind definitiv Items gechecked. Außerdem gibt getCheckedItemPositions ein korrektes Ergebnis zurück.
Nun finde ich es nicht so toll, ein SparseBooleanArray zu verarbeiten, wenn nur 1 Item selektiert ist.
Code aus der ActivityOberklasse:
Code aus einer erbenden Activity:
Anbringung der Listener in der erbenden Activity :
Was ist da falsch ???

ich werde langsam wahnsinnig

Irgendwie schaffe ich es nicht, die selektierten Items meiner Listview richtig auszulesen. Die Funktionen getSelectedItem(Id/Position) ergeben alle null und -1.
getCheckedItemPosition() ebenso -1. Komischerweise gibt getCheckedItemsCount die richtige Anzahl an, also es sind definitiv Items gechecked. Außerdem gibt getCheckedItemPositions ein korrektes Ergebnis zurück.
Nun finde ich es nicht so toll, ein SparseBooleanArray zu verarbeiten, wenn nur 1 Item selektiert ist.
Code aus der ActivityOberklasse:
Code:
protected class ActionModeCallback implements ActionMode.Callback {
protected ListView listview;
protected int menuLayout;
public ActionModeCallback(ListView lv, int layout) {
this.listview = lv;
this.menuLayout = layout;
}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(this.menuLayout, menu);
return true;
}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return handleActionModeItemSelection(mode, item);
}
public void onDestroyActionMode(ActionMode mode) {
//TODO Das clearen will auch nicht so...
this.listview.clearChoices();
this.listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
mCab = null;
}
}
Code aus einer erbenden Activity:
Code:
@Override
public boolean handleActionModeItemSelection(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_delete:
deleteItems(lv.getCheckedItemPositions());
mode.finish();
return true;
case R.id.menu_edit:
//TODO: Leider liefern alle anderen Methoden immer nur -1 zurück...
editItem(lv.getCheckedItemPositions());
mode.finish();
return true;
case R.id.menu_quantity:
editQuantity(lv.getCheckedItemPositions());
mode.finish();
return true;
case R.id.menu_mhd:
editMhd(lv.getCheckedItemPositions());
mode.finish();
return true;
default:
return false;
}
}
Anbringung der Listener in der erbenden Activity :
Code:
this.lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
if (mCab != null) {
return false;
}
mCab = startActionMode(new ActionModeCallback(lv, R.menu.vorratdetail_contextmenu));
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
view.setSelected(true);
lv.setItemChecked(position, true);
return true;
}
});
this.lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(mCab != null) {
if(lv.getCheckedItemCount() > 1) {
mCab.getMenu().setGroupVisible(R.id.menu_group_singleSelection, false);
} else {
mCab.getMenu().setGroupVisible(R.id.menu_group_singleSelection, true);
}
}
}
});
Was ist da falsch ???



Zuletzt bearbeitet: