我想创建一个Android应用程序,它在列表视图中显示一个列表,然后允许用户在onItemlongclick上删除项目,然后显示复选框以选择要删除的项目。
我知道它必须调用OnItemLongClickListener但不知道如何实现它。有什么想法吗?
lv.setOnItemLongClickListener(this);
@Override
public boolean onItemLongClick(AdapterView<?> parent, View v, int pos, long id) {
// TODO Auto-generated method stub
return false;
}
我很想念如何做到这一点。我用Google搜索,但遗憾的是没有找到任何相关的教程。 非常感谢帮助。感谢。
答案 0 :(得分:2)
我最近才做到这一点,但这是一个临时修复,所以这可能不是最好的方法。
在我的ListView项目(行)的布局中,我包含了一个CheckBox,其可见性将被切换,但最初是不可见的,即View.GONE
。
然后,在我的适配器中,我包含了一个成员布尔变量selectable
,以及一个公共方法来设置它并刷新:
private boolean selectable = false;
public void setSelectable(boolean selectable)
{
this.selectable = selectable;
notifyDataSetChanged();
}
在适配器的getView()
方法中,检查selectable
并相应地设置CheckBox的可见性。
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
...
cbx.setVisibility(selectable ? View.VISIBLE : View.GONE);
...
}
我使用ToggleButton来改变选择模式,但在你的情况下,你需要做一些不同的事情。我会在适配器上添加一个额外的方法:
public boolean isSelectable()
{
return selectable;
}
然后,您可以通过长按来切换可选状态:
@Override
public boolean onItemLongClick(AdapterView<?> parent, View v, int pos, long id)
{
...
yourAdapter.setSelectable(!yourAdapter.isSelectable);
...
}
答案 1 :(得分:0)
要响应列表项的点击,您需要将其放入onCreate():
ListView lv = (ListView) findViewById (R.id.list);
lv.setOnItemLongClickListener (this);
lv.setLongClickable (true);
然后,只要用户长时间触摸列表项,就会调用onItemLongClickListener。在那里设一个断点,并对你了解这一点感到满意。