web-dev-qa-db-fra.com

Utilisez à la fois onClickListener et onLongClickListener dans listview Android 1.6

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();
      }
  });
}
33
dcanh121

Avez-vous renvoyé un booléen true à la fin de OnLongClickListener pour indiquer que vous ne souhaitez plus de traitement?

111
Tsan-Kuang Lee

Je pense que vous devriez utiliser OnItemLongClickListener () au lieu de OnLongClickListener ().

Voir site Web des développeurs pour plus de réponses

13
varun bhardwaj
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;
    }
});
9
selva_pollachi
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; }});
1
Nouman Shah