我正在开发一个Android应用程序,其中使用了列表视图。现在我想同时使用单击事件和长按事件。如果可能的话,有人可以帮我实现吗?
你只需要返回 true。
list.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(final AdapterView<?> p, View v,final int po, long id) {
// your code
return true;
}
});
该命令基本上告诉系统长按事件已被处理(默认情况下为false
),不需要处理任何其他事件(即单击事件,这在长按事件中可能会意外发生)。
看这个:
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);
}
});
对于简单的点击操作,您应该使用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);
}
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)
{
}
});
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;
}
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; }});