我正在尝试使用ContextMenu 我使用SimpleCursorAdapter成功完成了一个简单的ListActivity 继续我想用CursorAdapter替换SimpleCursorAdapter但仍保留ContextMenu行为,所以我添加了两个强制覆盖函数bindView和newView
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = mLayoutInflater.inflate(R.layout.check_row, parent, false);
registerForContextMenu(view);
return view;
}
请注意registerForContextMenu,它替换了ListActivity的onCreate方法中的registerForContextMenu(getListView())。我发现有必要调用onCreateContextMenu(...)
所有这些都有效(使用预期的小部件创建的行,对它们进行回调等等)。除了提供给onCreateContextMenu(...)的ContextMenuInfo参数现在为空之外的一切 - 停止我访问rowId。 还有其他技巧要做 - 可能是在CursorAdapter的bindView(...)方法中吗?
答案 0 :(得分:2)
我正在回答这个问题 - 但我会指出'commonsware.com'提供了线索和方向,见上文。
问题
- 在行布局中使用CheckBox会影响上下文菜单的使用
- 我相信CheckedTextView是用于多选的,它不适合初始化已检查状态。
我采用的解决方案如下
1.使用CheckedTextView
2.从CursorAdapter扩展到bindView(...)期间初始化检查状态
注意:这必须管理显示正确的图标
3.在onListItemClick(...)中管理CheckedTextView的状态并将其记录在dBase中,不要忘记更新光标。
答案 1 :(得分:1)
这不是正确的做法。您注册ListView
的上下文菜单,而不是行。预先调用registerForContextMenu()
,可能在onCreate()
充气后放置{。}}。