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; } } 

  • RecyclerView expandible cardView
  • Establecer en el oyente de clic de artículo dentro onBindViewHolder () con RecyclerView.Adapter
  • RecyclerView: obtenga todas las vistas / presentaciones existentes
  • AppBarLayout, NestedScrollView, FrameLayout, ¿cuál es el trato?
  • Cómo diseñar Gridview como aplicación guardian
  • Android RecyclerView último elemento eliminar (tiempo de ejecución) error
  • Configuración de ejecución de Android Studio para la generación de configuración de ORMLite
  • Los resultados de Theme.AppCompat.Light.DarkActionBar no muestran ActionBar
  • ¿Cómo configurar Proguard usando Gradle?
  • Tiene "versión de archivo de clase no compatible 52.0" después de incluir un módulo en un proyecto
  • No se puede escribir en el terminal integrado de Android Studio
  • La carpeta AndroidTest no se muestra en AndroidStudio
  • 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.