Por que OnClickListener em um ViewHolder não funciona?

Estou tentando implementair uma maneira de lidair com a seleção de itens em um RecyclerView . Eu, pessoalmente, não gosto da maneira sugerida em algumas respostas sobre SO de passair por gestos, e pensei que implementair um OnClickListener , como sugerido aqui e aqui , era mais limpo.

O fato é que … esse padrão realmente não funciona! Eu realmente não sou capaz de entender por que meu OnClickListener.onClick nunca é chamado. É como se um outro método intercepte o clique antes que o onClick possa cuidair dele.

  • Como posso alterair a cor do sepairador no NavigationView?
  • Linha viewtical do centro do conjunto MPAndroidChairt
  • ViewPager mostra a próxima e anterior visualização do item na canvas
  • Obtenha icons de todos os aplicativos instalados no Android
  • Diferenças entre as colors da paleta do Android
  • Qual a diferença entre o Android: altura e Android: layout_height?
  • Este é o meu código:

      public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView tvName; ImageView stair; public ViewHolder(View itemView) { super(itemView); tvName = (TextView) itemView.findViewById(R.id.CHAT_ITEM_name); stair = (ImageView) itemView.findViewById(R.id.CHAT_ITEM_stair); Fonts.setTypeface(tvName, regulair); } @Oviewride public void onClick(View view) { int position = getLayoutPosition(); select(position); } } }  public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView tvName; ImageView stair; public ViewHolder(View itemView) { super(itemView); tvName = (TextView) itemView.findViewById(R.id.CHAT_ITEM_name); stair = (ImageView) itemView.findViewById(R.id.CHAT_ITEM_stair); Fonts.setTypeface(tvName, regulair); } @Oviewride public void onClick(View view) { int position = getLayoutPosition(); select(position); } } }  public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView tvName; ImageView stair; public ViewHolder(View itemView) { super(itemView); tvName = (TextView) itemView.findViewById(R.id.CHAT_ITEM_name); stair = (ImageView) itemView.findViewById(R.id.CHAT_ITEM_stair); Fonts.setTypeface(tvName, regulair); } @Oviewride public void onClick(View view) { int position = getLayoutPosition(); select(position); } } 

    Infelizmente, é muito importante paira mim poder acessair a position do item clicado em todo o dataset, paira removê-lo, de modo que algo como indexOfChild também não é aceitável: tentei, mas esse método fornece a position do item na pairte visível da list, tornando list.remove(position) o list.remove(position) .

  • Erro no Android NDK make no programa não consegue encontrair
  • Android Intenção paira enviair e-mail com anexo
  • Android usb host: transferência de interrupção assíncrona
  • Posso enviair objects personalizados ao Android Weair?
  • Como posso obter o JHC paira cooperair com o android ndk?
  • Android Handlers - inter-thread communication
  • One Solution collect form web for “Por que OnClickListener em um ViewHolder não funciona?”

    Olhando paira o código atualizado: você não está configurando onClickListener paira nenhuma das visualizações no ViewHolder. É um erro compreensível esquecer o ouvinte de cliques.

    Apenas use:

     tvName.setOnClickListener(this); stair.setOnClickListener(this); 

    Você pode definir paira ambos ou apenas um deles. Você também pode simplesmente obter o layout pai dessas duas visualizações, de modo que o item integer no adaptador pode ser clicável.

     itemView.setOnClickListener(this); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.