2016-04-23 5 views
0

Вопроса:Android: пропускание OnClickListener в адаптер

Как мы передаем OnLongClickListener в адаптер при установке его в своей деятельности?

конструктор адаптера даёт:

public Activity mcontext; 
public View.OnLongClickListener LongClicking; 

public SubjectsAdapter(Activity context, View.OnLongClickListener longClick) { 
    this.mcontext = context; 
    this.LongClicking = longClick; 
} 

В деятельности:

adapter = new SubjectsAdapter(this, /*A OnLongClickListener here */); 

Я знаю, что это, вероятно, плотный вопрос, я относительно новым для андроид

ответ

1

В принципе вы можете передать его как анонимный класс

adapter = new SubjectsAdapter(this, new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View view) { 
      //do your stuff 
     } 
    }); 

Но как вы регистрируете этот обратный вызов для определенного вида? Я бы предложил зарегистрировать его для представления, которое заинтересовано в этом обратном вызове с setOnLongClickListener вместо передачи его в адаптер (но это зависит от вашего приложения).

yourview.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View view) { 
      //do your stuff 
     } 
    }); 
+0

woudn't, что первый вариант будет таким же, как установка OnLongCLickListener в ViewHolder адаптера? (Я использую RecyclerView) –

+0

Да, вы можете это сделать. Вы также можете реализовать 'View.OnLongClickListener' в своем конкретном' RecyclerView.ViewHolder'. См. Этот [этот ответ] (http://stackoverflow.com/questions/30078344/handle-on-item-long-click-on-recycler-view) или это [это] (http://stackoverflow.com/questions/27945078/onlongitemclick-в-recyclerview/27945635 # 27945635) – Luke

Смежные вопросы