2012-06-28 2 views
4

Я создаю приложение в Android. В этом я использую просмотр списка. теперь я хочу использовать событие click и long click. если возможно, это может помочь мне.Как реализовать длинный клик-прослушиватель и onclicklistener в одном списке.

+0

http://stackoverflow.com/questions/5955937/long-press-lits-item-to-open-pop-up-menu –

ответ

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

использование ListView.setOnItemClickListener (слушатель) и ListView.setOnItemLongClickListener (слушатель) http://developer.android.com/guide/topics/ui/layout/listview.html

+0

Я пробовал. если я использую событие click, он будет работать. когда я использую длинный щелчок, вызывается оба действия –

1

Просто используйте setOnItemClickListener() и setOnItemLongClickListener() на вашем ListView.

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; 
} 
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); 
} 
9

Вам просто нужно вернуть истинный

list.setOnItemLongClickListener(new OnItemLongClickListener() { 

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

     // your code 

    return true; 
    }  
}); 

Это в основном говорит системе, что Длительное нажатие событие было обработано (по умолчанию 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; }}); 
Смежные вопросы