У меня есть класс, расширяющий ListActivity, и еще один, расширяющий BaseAdapter. Когда я запускаю класс ListActivity, я заполняю список объектов и передаю его адаптеру.
Я пытаюсь показать контекстную панель действий, когда пользователь выбирает один или несколько элементов из списка, но я застрял. Я пробовал много способов, и единственное, что я нашел, чтобы сделать что-то близкое, - это поместить слушателя в метод getView () из адаптера, но когда я это делаю, я не могу выполнить множественный выбор, и панель действий контекста все еще не работает .
Чего не хватает для отображения контекстного меню и выбора итенов из ListView?
public class ChatActivity extends ListActivity {
@Override
protected void onCreate(Bundle bundle) {
ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onDestroyActionMode(ActionMode arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean onCreateActionMode(ActionMode arg0, Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.delete, menu);
return true;
}
@Override
public boolean onActionItemClicked(ActionMode arg0, MenuItem arg1) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onItemCheckedStateChanged(ActionMode arg0, int arg1, long arg2,
boolean arg3) {
// TODO Auto-generated method stub
}
});
}
}
public class ChatAdapter extends BaseAdapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View convertView = LayoutInflater.from(mContext).inflate(
R.layout.chat_row, parent, false);
/*convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ColorDrawable drawable = ((ColorDrawable)v.getBackground());
if(drawable == null || drawable.getColor() == Color.GRAY){
v.setBackgroundColor(Color.WHITE);
} else {
v.setBackgroundColor(Color.GRAY);
}
//etc
}
});*/
return convertView;
}
}