Ответ 1
Я бы использовал режим Contextual Action
в этом проекте, если вы хотите выбрать несколько элементов в списке. Вот как это делается.
Прежде всего, код должен расширять ListActivity
и реализовывать ActionMode.Callback
В onCreate medthod вам нужно закодировать следующее:
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
String[] values = new String[] { "data list goes here" };
MySimpleArrayAdapter adapter = new MySimpleArrayAdapter(this, values);
setListAdapter(adapter);
getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
if (mActionMode != null) {
return false;
}
selectedItem = position;
// Start the CAB using the ActionMode.Callback defined above
mActionMode = MyListActivityActionbar.this.startActionMode(MyListActivityActionbar.this);
view.setSelected(true);
return true;
}
});
}
Вам нужно вызвать метод show:
private void show() {
Toast.makeText(MyListActivityActionbar.this, String.valueOf(selectedItem), Toast.LENGTH_LONG).show();
}
При каждом показе режима действия необходимо вызвать следующее. Он всегда вызывается после onCreateActionMode
, но может быть вызван несколько раз, если режим недействителен:
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false; // Return false if nothing is done
}
Затем, когда пользователь выбирает элемент списка, необходимо вызвать следующий метод:
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.menuitem1_show:
show();
// Action picked, so close the CAB
mode.finish();
return true;
default:
return false;
}
}
Наконец, когда пользователь выходит из выбора:
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionMode = null;
selectedItem = -1;
}