如何在单个ListView中实现长按监听器和点击监听器

6

我正在开发一个Android应用程序,其中使用了列表视图。现在我想同时使用单击事件和长按事件。如果可能的话,有人可以帮我实现吗?


https://dev59.com/rm025IYBdhLWcg3whWZm - Dheeresh Singh
7个回答

12

你只需要返回 true。

list.setOnItemLongClickListener(new OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(final AdapterView<?> p, View v,final int po, long id) {

        // your code

    return true;
    }    
});

该命令基本上告诉系统长按事件已被处理(默认情况下为false),不需要处理任何其他事件(即单击事件,这在长按事件中可能会意外发生)。


5

看这个:

在ListActivity中添加点击和长按事件侦听器

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> av, View v, int pos, long id) {
        onListItemClick(v,pos,id);
    }
});

..

 lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id) {
            return onLongListItemClick(v,pos,id);
        }
    });

4

对于简单的点击操作,您应该使用ListView.setOnItemClickListener

对于长按操作,您有两种选择。如果您想执行单个操作,请使用ListView.setOnLongClickListener。如果您想要上下文菜单,则需要为列表注册上下文菜单,创建菜单及其操作。

registerForContextMenu(ListView);

    @Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
       super.onCreateContextMenu(menu, v, menuInfo);
       // menu code here
    }
}

@Override
public boolean onContextItemSelected(MenuItem item) {
     // menu habdling code here
     return super.onContextItemSelected(item);
}

2

我试过了。如果我使用点击事件,它会起作用。但是当我使用长按事件时,两个动作都会被调用。 - K.Muthu

1
只需在您的列表视图上使用setOnItemClickListener()setOnItemLongClickListener()即可。
listView = (ListView) findViewById(R.id.listview);
listView.setOnItemClickListener(new OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){
        }
    });
listView.setOnItemLongClickListener(new OnItemLongClickListener()
    {
    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, final int position, long arg3)
    {

    }
});

1
请使用以下代码。
    list.setOnItemClickListener(this);
    list.setOnItemLongClickListener(this);

监听器定义将是:

 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub


}

public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {
    // TODO Auto-generated method stub

    return false;
}

0

itemToclick 是可见部分,您想要在其上单击执行某些操作的区域

itemToClick.setOnClickListener(new View.OnClickListener() {
   @Override
    public void onClick(View v)      { 
      //do your logic on click 
     });
itemToClick.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
      // do your logic for long click and remember to return it 
        return true; }});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接