传递ListView项的ID来ActionMode.Callback对象 [英] Passing id of ListView item to ActionMode.Callback object
问题描述
所以现在我的问题是,现在我长点击它会弹出一个上下文操作栏一个ListView的项目。传递到onItemLongClick ID是我想在mActionModeCallback的使用上ActionItemClicked()方法中的变量。这似乎是这将是一个相当普遍的方法,因为如果一个用户正在编辑的项目列表,你想访问该行的id在数据库不知何故,当用户点击编辑或删除操作。
listView.setOnItemLongClickListener(新OnItemLongClickListener(){
公共布尔onItemLongClick(适配器视图<指p,观景,INT POS,长ID){ //行的数据库中的ID
长variableThatIWantToPassToCallback = ID;
mActionMode = getActivity()startActionMode(mActionModeCallback)。
view.setSelected(真);
返回true;
}
});私人ActionMode.Callback mActionModeCallback =新ActionMode.Callback(){ 公共布尔onCreateActionMode(ActionMode模式,菜单菜单){} 在prepareActionMode公共布尔(ActionMode模式,菜单菜单){} 公共布尔onActionItemClicked(ActionMode模式,菜单项项){
//我想访问点击项目的ID在这里,不item.getItemId()
} 公共无效onDestroyActionMode(ActionMode模式){}
};
要做到这一点,正确的方法是调用 mActionMode.setTag(1)
在 onItemCheckedStateChanged
,然后从 onActionItemClicked
函数调用 mode.getTag();
So my problem right now is that right now I am long clicking an item in a ListView which brings up a contextual action bar. The id passed into onItemLongClick is the variable that I would like to use in the mActionModeCallback's on ActionItemClicked() method. This seems like it would be a fairly common procedure since if a user is editing a list of items, you would want to access the id of that row in the database somehow when the user clicked an "edit" or a "delete" action.
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> p, View view, int pos, long id) {
//The id of the row in the database
long variableThatIWantToPassToCallback = id;
mActionMode = getActivity().startActionMode(mActionModeCallback);
view.setSelected(true);
return true;
}
});
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
//I would like access to the id of the clicked item here, NOT item.getItemId()
}
public void onDestroyActionMode(ActionMode mode) {}
};
The proper way to do this is to call mActionMode.setTag("1")
in onItemCheckedStateChanged
and then from the onActionItemClicked
function call mode.getTag();
这篇关于传递ListView项的ID来ActionMode.Callback对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!