如何在列表视图上实现长时间单击侦听器

tec*_*ayu 145 android android-listview onlongclicklistener

我想OnLongClickListener在列表视图中添加.每当用户长按列表中的项目时,应执行一些操作,但我的代码不会捕获此侦听器.请让我知道我哪里出错了.类似的代码setOnItemClickListener非常适用.

这是代码:

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

            public boolean onItemLongClick(AdapterView<?> arg0, View v,
                    int index, long arg3) {
                // TODO Auto-generated method stub
                 Log.d("in onLongClick");
                 String str=listView.getItemAtPosition(index).toString();

                 Log.d("long click : " +str);
                return true;
            }
}); 
Run Code Online (Sandbox Code Playgroud)

Din*_*rma 307

您必须在ListView中设置setOnItemLongClickListener():

lv.setOnItemLongClickListener(new OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    int pos, long id) {
                // TODO Auto-generated method stub

                Log.v("long clicked","pos: " + pos);

                return true;
            }
        }); 
Run Code Online (Sandbox Code Playgroud)

列表中每个项目的XML(如果您使用自定义XML)也必须具有android:longClickable="true"(或者您可以使用便捷方法lv.setLongClickable(true);).这样,您可以拥有一个列表,其中只有一些项目响应longclick.

希望这会帮助你.

  • 一定要调用`lv.setLongClickable(true);`. (23认同)
  • 这不适合我.但这样做:`lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener(){...` (15认同)
  • 设置侦听器时,Android设置longClickable = true。 (2认同)

Jon*_*Lin 25

如果ListView 项引用单独的XML文件,android:longClickable="true"除了设置setOnItemLongClickListener()ListView 之外,还要确保添加到该布局文件.


小智 15

或尝试此代码:

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

            public boolean onItemLongClick(AdapterView<?> arg0, View v,
                    int index, long arg3) {

    Toast.makeText(list.this,myList.getItemAtPosition(index).toString(), Toast.LENGTH_LONG).show();
                return false;
            }
}); 
Run Code Online (Sandbox Code Playgroud)


nan*_*esh 6

我认为上面的代码将适用于LongClicking列表视图,而不是单个项目.

为什么不用registerForContextMenu(listView).然后在OnCreateContextMenu中获取回调.

对于大多数用例,这将是相同的.