J'utilise à la fois onClickListener
et onLongClickListener
pour un TextView dans un ListView. Je vois que dans Android 1.6, l'écouteur de clic long est déclenché avec l'écouteur au clic, ce qui signifie que les deux sont déclenchés lorsque je clique longuement. Mais ce n'est pas le cas dans les futures versions. Existe-t-il une solution pour cela?
@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();
}
});
}
Avez-vous renvoyé un booléen true
à la fin de OnLongClickListener
pour indiquer que vous ne souhaitez plus de traitement?
Je pense que vous devriez utiliser OnItemLongClickListener () au lieu de OnLongClickListener ().
Voir site Web des développeurs pour plus de réponses
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;
}
});
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; }});