android OnItemLongClickListener listview显示listview复选框

时间:2013-12-01 16:23:07

标签: android listview android-listview

我想创建一个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搜索,但遗憾的是没有找到任何相关的教程。 非常感谢帮助。感谢。

2 个答案:

答案 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。在那里设一个断点,并对你了解这一点感到满意。