如何使列表页眉和页脚不可点击?

时间:2012-09-18 15:13:25

标签: java android

我有一个带有页脚和标题的列表。我添加了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());

            }

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

For HeaderViewFooterView 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);
}

答案 2 :(得分:1)

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