39 votes

Utilisez à la fois onClickListener et onLongClickListener dans listview Android 1.6

J'utilise onClickListener et onLongClickListener pour une TextView dans une ListView. Je vois que dans Android 1.6, l'écouteur de clic long est tiré avec l'écouteur sur clic ce qui signifie que les deux sont tirés lorsque je clique long. Mais ce n'est pas le cas dans les versions futures. Y a-t-il un correctif 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();
      }
  });
}

125voto

Tsan-Kuang Lee Points 1184

Avez-vous retourné booléen true la fin de OnLongClickListener pour indiquer que vous ne voulez plus de traitement ?

14voto

varun bhardwaj Points 634

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

Voir le site Web des développeurs pour plus de réponse

13voto

selva_pollachi Points 1452
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;
    }
});

3voto

Nouman Shah Points 457
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; }});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X