我是Android开发的新手,我的问题是为listview项目提供选项的最佳方式是什么? 在Bada OS上,您可以水平滑动任何列表视图项,并访问该项的选项。 http://horrorcoding.altervista.org/developing-on-bada-2-0-%E2%80%93-how-to-use-listcontextitems-in-a-listviewgroupedlistview/
但这在Android上不存在。那怎么办呢? 我的主要活动有一个列表视图,如果您点击某个项目,它会打开一个新活动,其中包含所点击项目的详细信息。
但是在主要活动中,您应该可以删除或编辑任何项目。 所以我的想法:
idea1 : 我在项目的右上角放了一个小的编辑图标,当用户点击它时,我会显示带有编辑/删除选项的QuickAction。 http://www.londatiga.net/it/how-to-create-quickaction-dialog-in-android/ 如果用户点击该项目的其他部分,只需打开详细信息活动。
idea2 : 我使用contextmenu来长按该项目。但是这个选项对于用户来说是“隐形的”,那么他们怎么知道他们可以对这些项目进行长按?
您怎么看?
答案 0 :(得分:4)
通常的方法是为列表创建一个上下文菜单(通过长按列表项激活)。
“长按上下文菜单”是Android标准。任何用户都知道它,不需要提供指标(IMO)。由于您正在制作Android应用,我会坚持使用Android惯例。 :)
听起来你知道如何实现它,但万一你不...
首先,您为上下文菜单注册列表:
...
setListAdapter(lists);
registerForContextMenu(getListView());
然后你提供代码或创建上下文菜单(你也可以从XML资源创建它,但我没有那个方便的例子):
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Item Operations");
menu.add(0, v.getId(), 0, "Edit Item");
menu.add(0, v.getId(), 0, "Delete Item");
}
然后提供代码来处理菜单中的选项:
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
if (item.getTitle() == "Edit Item") {
mRowId = info.id;
DialogFragment_Item idFragment = new DialogFragment_Item();
idFragment.show(getFragmentManager(), "dialog");
} else if (item.getTitle() == "Delete Item") {
mDbHelper.deleteItem(info.id);
return true;
}
return super.onContextItemSelected(item);
}
答案 1 :(得分:0)
长按项目是实现选项的最常用方式,因此用户了解此类事情。我认为这是要遵循的方式。 但是,您也可以实现按钮,或者显示与长按(例如官方Twitter应用程序)相同选项的幻灯片操作。