在 listview Android 1.6 中同时使用 onClickListener 和 onLongClickListener
Posted
技术标签:
【中文标题】在 listview Android 1.6 中同时使用 onClickListener 和 onLongClickListener【英文标题】:Use both onClickListener and onLongClickListener in listview Android 1.6 【发布时间】:2011-06-05 00:29:07 【问题描述】:我将onClickListener
和onLongClickListener
用于ListView 中的TextView。我看到在 android 1.6 中,长单击侦听器与 on click 侦听器一起被触发,这意味着当我长按时都会触发两者。但在未来的版本中并非如此。有什么解决办法吗?
@Override
public View getView(int position, View convertView, ViewGroup parent)
if (convertView == null)
LayoutInflater inflater = getLayoutInflater();
row = inflater.inflate(R.layout.row, parent, false);
TextView tv = (TextView) row.findViewById(R.id.tv);
tv.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
showMessage();
);
tv.setOnLongClickListener(new View.OnLongClickListener()
@Override
public boolean onLongClick(View v)
showLongMessage();
);
【问题讨论】:
什么“修复”?它在 1.6 中同时触发的事实肯定是一个错误。 通过修复,我的意思是,有什么办法可以防止这个问题。 它们的调用顺序是否一致?哪个? 当您进行长按时,回调是否在完全相同的时间被调用? 首先执行longClick事件,然后执行click事件。 【参考方案1】:您是否在 OnLongClickListener
末尾返回布尔值 true
以表明您不想进一步处理?
【讨论】:
【参考方案2】:我认为你应该使用 OnItemLongClickListener() 而不是 OnLongClickListener()。
更多回复请见developers website
【讨论】:
【参考方案3】:TextView t1 = (TextView) findViewById(R.id.textView1);
t1.isClickable();
t1.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), "Clicked", Toast.LENGTH_SHORT).show();
);
t1.setOnLongClickListener(new View.OnLongClickListener()
@Override
public boolean onLongClick(View v)
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), "Long Clicked", Toast.LENGTH_SHORT).show();
return true;
);
【讨论】:
【参考方案4】: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; );
【讨论】:
以上是关于在 listview Android 1.6 中同时使用 onClickListener 和 onLongClickListener的主要内容,如果未能解决你的问题,请参考以下文章