Android:为listview项目提供选项的最佳方式

时间:2012-07-14 15:15:21

标签: android listview slide options bada

我是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来长按该项目。但是这个选项对于用户来说是“隐形的”,那么他们怎么知道他们可以对这些项目进行长按?

您怎么看?

2 个答案:

答案 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应用程序)相同选项的幻灯片操作。