我有一个带有页脚和标题的列表。我添加了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());
}
答案 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 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);
}
答案 2 :(得分:1)
如果在ListView上添加列表标题,则适配器中第一个项目的索引为1。 如果未添加标头,则适配器中第一个项目的索引为0.