NiP*_*Pfi 1 android listview android-inflate action-menu
我正在尝试使用动作模式获取上下文菜单,我可以通过长按它来选择ListView中的项目.我根据此引用创建了一个MultiChoiceListener,并创建了一个ItemLongClickListener,它将一个项设置为已选中,这是操作模式根据此引用工作所需的.
我的问题是,即使项目长时间点击动画正在播放,ActionMenu也不会膨胀.
ListView代码:
final ListView listView = (ListView) findViewById(android.R.id.list);
listView.setAdapter(adapter);
listView.setLongClickable(true);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long id) {
Cursor cursor = db.getSubject(id);
String subject = null;
try {
subject = cursor.getString(cursor.getColumnIndex("subject"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Intent intent = new Intent(Main.this, Marks.class);
intent.putExtra("selected", subject);
startActivity(intent);
}
});
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
listView.setItemChecked(arg2, true);
return true;
}
});
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
// TODO Auto-generated method stub
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.context, menu);
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
// TODO Auto-generated method stub
}
});
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Com*_*are 10
我没有看到任何代码实际启动动作模式.这是您OnItemLongClickListener需要做的事情,例如:
@Override
public boolean onItemLongClick(AdapterView<?> view, View row,
int position, long id) {
modeView.clearChoices();
modeView.setItemChecked(position, true);
if (activeMode == null) {
activeMode=host.startActionMode(this);
}
return(true);
}
Run Code Online (Sandbox Code Playgroud)
可以在以下网址找到使用此类操作模式手动演示的完整示例项目:https://github.com/commonsguy/cw-omnibus/tree/master/ActionMode/Manual
请注意,此项目演示了如何通过ActionBarSherlock使用操作模式.
| 归档时间: |
|
| 查看次数: |
13093 次 |
| 最近记录: |