Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo se utiliza un OnClickListener en una vista de reciclador?

Lo que básicamente estoy tratando de hacer es hacer que los objetos que aparecen en la vista del reciclador se puede hacer clic en un cierto TextView id porque estoy haciendo un programa que muestra una portada del álbum y su título junto a ella en una lista. Necesito poder hacer clic en cada uno de los cuadros que hace la vista de reciclado y hacer que un TextView aparezca con la otra información (autor, fecha publicada, canciones de golpe, etc.) cuando se hace clic y luego un botón de retroceso Posible) para volver a la lista de álbumes. He estado mirando esto durante horas y no puedo entender cómo hacer que un trabajo de OnclickListener para él. Si usted sabe cómo o tiene alguna sugerencia id estaría encantado de escucharlos. ¡Gracias!

package com.albumlist.albumlist; import android.content.Context; import android.content.Intent; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private AlbumData[] itemsData; public MyAdapter(AlbumData[] itemsData){ this.itemsData = itemsData; } public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { private TextView txtViewTitle; private ImageView imgViewIcon; public ViewHolder(View itemLayoutView) { super(itemLayoutView); itemLayoutView.setOnClickListener(this); txtViewTitle = (TextView) itemLayoutView.findViewById(R.id.album_title); imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.album_icon); } @Override public void onClick(View v) { } } @Override public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,int viewType) { View itemLayoutView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.data_layout, null); ViewHolder viewHolder = new ViewHolder(itemLayoutView); return viewHolder; } @Override public void onBindViewHolder(ViewHolder viewHolder, int position) { viewHolder.txtViewTitle.setText(itemsData[position].getTitle()); viewHolder.imgViewIcon.setImageResource(itemsData[position].getImageUrl()); } @Override public int getItemCount() { return itemsData.length; } } 

  • ¿Por qué utilizar XML para crear GUI es una buena práctica en Android
  • GetExtractedText en la advertencia de InputConnection inactiva en android
  • ¿Por qué google map v2 de repente se estrelló por java.lang.NullPointerException: Intento de obtener la longitud de matriz nula?
  • Cómo agregar cabeceras a interceptor de solicitud OkHttp?
  • Firebase android proxy setting
  • Android compartir archivos, enviándolos por correo electrónico u otras aplicaciones
  • ¿Por qué la adición de una instrucción If dentro de este método lo ralentiza tan drásticamente?
  • Cómo mostrar la notificación únicamente en el dispositivo Android Wear
  • One Solution collect form web for “¿Cómo se utiliza un OnClickListener en una vista de reciclador?”

    El concepto está bien resumido por Xaver Kapeller en los comentarios. Si está buscando una forma sencilla de gestionar su interacción RecyclerView similar a las interacciones tradicionales de un ListView , consulte la biblioteca recyclerview-multiselect de BigNerdRanch en GitHub. Tienen una aplicación de ejemplo que puede explorar, que implementa una serie de OnClickListeners y OnLongClickListeners con capacidades adicionales de multi-selección.

    He aquí un fragmento de cómo BigNerdRanch implementa los oyentes en un Fragment través de un Adapter y un ViewHolder , que en este caso es en realidad una extensión del propio ViewHolder de la biblioteca SwappingHolder.

     public CrimeHolder(View itemView) { super(itemView, mMultiSelector); mTitleTextView = (TextView) itemView.findViewById(R.id.crime_list_item_titleTextView); mDateTextView = (TextView) itemView.findViewById(R.id.crime_list_item_dateTextView); mSolvedCheckBox = (CheckBox) itemView.findViewById(R.id.crime_list_item_solvedCheckBox); itemView.setOnClickListener(this); itemView.setLongClickable(true); itemView.setOnLongClickListener(this); } public void bindCrime(Crime crime) { mCrime = crime; mTitleTextView.setText(crime.getTitle()); mDateTextView.setText(crime.getDate().toString()); mSolvedCheckBox.setChecked(crime.isSolved()); } @Override public void onClick(View v) { if (mCrime == null) { return; } if (!mMultiSelector.tapSelection(this)) { selectCrime(mCrime); } } @Override public boolean onLongClick(View v) { ((AppCompatActivity) getActivity()).startSupportActionMode(mDeleteMode); mMultiSelector.setSelected(this, true); return true; } } private class CrimeAdapter extends RecyclerView.Adapter<CrimeHolder> { @Override public CrimeHolder onCreateViewHolder(ViewGroup parent, int pos) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.list_item_crime, parent, false); return new CrimeHolder(view); } @Override public void onBindViewHolder(CrimeHolder holder, int pos) { Crime crime = mCrimes.get(pos); holder.bindCrime(crime); Log.d(TAG, "binding crime" + crime + "at position" + pos); } @Override public int getItemCount() { return mCrimes.size(); } } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.