Android: лучший способ предоставить параметры для элементов списка

Я новичок в разработке Android, и мой вопрос о том, как лучше всего предоставить параметры для элементов списка? В ОС Bada вы можете сдвинуть любой элемент списка по горизонтали и получить доступ к параметрам этого элемента. 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: я использую контекстное меню для длительного нажатия на элемент. Но эта опция «невидима» для пользователей, так как же они могут знать, что могут долго нажимать на элементы?

Что вы думаете?


person Zotyi    schedule 14.07.2012    source источник


Ответы (2)


Обычный метод заключается в создании контекстного меню для списка (активируется долгим щелчком по элементу списка).

А «долгое нажатие для контекстного меню» — это стандарт 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);
}
person Barak    schedule 14.07.2012
comment
Спасибо за ответ, тогда сделаю контекстное меню. Хотя лично мне Бада больше нравится :) - person Zotyi; 14.07.2012

Длительное нажатие на элемент является наиболее распространенным способом реализации ваших опций, поэтому пользователи знают о таких вещах. Я думаю, что это путь следования. Однако вы также можете реализовать свою кнопку или действие слайда, которое показывает те же параметры, что и ваше долгое нажатие (например, официальное приложение Twitter).

person AMerle    schedule 14.07.2012
comment
Спасибо за ответ, тогда сделаю контекстное меню. Хотя лично мне Бада больше нравится :) - person Zotyi; 14.07.2012