0

我有一个带有页脚和页眉的列表。我添加了 onLongClick 以从列表中删除项目。当我长按标题时,它会从列表中删除第一项。当我点击最后一个项目或页脚时,应用程序将崩溃——项目超出范围。

我可以使页脚和页眉不可点击吗?或者我应该如何计算适配器中的项目?还是有其他方法可以通过它?

删除项目:

list.setOnItemLongClickListener(new OnItemLongClickListener() {
        public boolean onItemLongClick(AdapterView<?> parent, View v,
                int position, long id) {
            // Delete Item from List

            ShoppingItem simpleItem = null;

            if (shoppingListApplication.getAdapter().getCount() > 0) {
                simpleItem = (ShoppingItem) shoppingListApplication
                        .getAdapter().getItem(position);
                removeShoppingItem(simpleItem,
                        shoppingListApplication.getAdapter());

            }
4

3 回答 3

3

您必须使用addHeaderView (View v, Object data, boolean isSelectable)addFooterView (View v, Object data, boolean isSelectable)使 ListView 的页眉和页脚不可点击。

只需通过false代替isSelectable页眉和页脚。

伪代码,

listview.addHeaderView(header_view, null, false);
listview.addFooterView(footer_view, null, false);
于 2012-09-18T15:18:42.487 回答
2

HeaderView对于和FooterView中的单独上下文菜单ListView

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();

    if (((AdapterContextMenuInfo)menuInfo).position == 1) {
        inflater.inflate(R.menu.foo1, menu);    // HEADER MENU
        return;
    }
    else if(((AdapterContextMenuInfo)menuInfo).position == listView.getAdapter().getCount() + 1) {
        inflater.inflate(R.menu.foo2, menu);    // FOOTER MENU
        return;
    }
    inflater.inflate(R.menu.foo3, menu);
}
于 2015-05-22T10:32:36.447 回答
1

如果在 ListView 上添加列表标题,则适配器中第一项的索引为 1。如果未添加标题,则适配器中的第一项索引为 0。

于 2012-09-18T15:20:43.490 回答