如何在单个列表视图中实现长按一下监听器和onclicklistener

时间:2012-06-28 12:18:44

标签: java android onclick

我在android中创建一个应用程序。在那我正在使用列表视图。现在我想要同时使用点击事件和长按事件。如果有可能可以帮助我做。

7 个答案:

答案 0 :(得分:9)

你只需要返回true

list.setOnItemLongClickListener(new OnItemLongClickListener() {

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

        // your code

    return true;
    }    
});

它基本上告诉系统已经处理了长按事件(默认为false),并且不需要处理其他事件(即单次按下,在长按事件中无意中发生)

答案 1 :(得分:4)

看到这个

Click & Long-Press Event Listeners in a 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);
        }
    });

答案 2 :(得分: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);
}

答案 3 :(得分:2)

使用ListView.setOnItemClickListener(listener)和ListView.setOnItemLongClickListener(listener) http://developer.android.com/guide/topics/ui/layout/listview.html

答案 4 :(得分: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)
    {

    }
});

答案 5 :(得分: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;
}

答案 6 :(得分: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; }});