Cómo usar RecyclerView, Tratando de seguir la sugerencia de developer.android.com pero obtener un error
Estoy tratando de usar RecyclerView para mostrar mi conjunto de datos, tratando de seguir este sitio web https://developer.android.com/training/material/lists-cards.html
El problema es que hay algo de malo y no se puede averiguar cómo solucionarlo, hice exactamente cómo sugiere ese sitio.
- Cómo inhabilitar el dibujo de la decoración del artículo de RecyclerView para la duración de las animaciones del artículo
- StaggaredGridLayoutManager no funciona correctamente
- Taps rápidos (clics) en RecyclerView abre varios fragmentos
- Android RecyclerView con volteo de CardView
- Recyclerview automáticamente se desplaza hacia arriba cuando los datos insertados
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private String[] mDataset; // Provide a reference to the views for each data item // Complex data items may need more than one view per item, and // you provide access to all the views for a data item in a view holder public static class ViewHolder extends RecyclerView.ViewHolder { // each data item is just a string in this case public TextView mTextView; public ViewHolder(TextView v) { super(v); mTextView = v; } } // Provide a suitable constructor (depends on the kind of dataset) public MyAdapter(String[] myDataset) { mDataset = myDataset; } // Create new views (invoked by the layout manager) @Override public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // create a new view View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.my_text_view, parent, false); // set the view's size, margins, paddings and layout parameters ... ViewHolder vh = new ViewHolder(v); // ERROR return vh; } // Replace the contents of a view (invoked by the layout manager) @Override public void onBindViewHolder(ViewHolder holder, int position) { // - get element from your dataset at this position // - replace the contents of the view with that element holder.mTextView.setText(mDataset[position]); } // Return the size of your dataset (invoked by the layout manager) @Override public int getItemCount() { return mDataset.length; } }
Android Studio me da un error:
ViewHolder (android.widget.TextView) in ViewHolder cannot be applied to (android.view.View)
¿Cómo debería hacer esto?
Parece que developer.android.com tiene algún error tipográfico aquí?
- ¿Cómo aplicar setItemChecked (position, true) con RecyclerView en Android?
- Ordenar los elementos de una visita de reciclaje mediante arrastrar y soltar
- Biblioteca avanzada de RecyclerView - ejemplos de código
- Animación de RecyclerView en el clic de artículo
- Capaz de hacer clic en dos elementos al mismo tiempo en un RecyclerView
- Cómo guardar la posición de desplazamiento de RecyclerView con RecyclerView.State?
- ¿Hay una manera de compartir un mismo LayoutManager entre múltiples RecyclerViews anidados
- Tipos incompatibles: no se puede emitir el visor a imageviewholder
Cuando infla una vista, suele ser una buena idea crear una instancia del tipo específico de vista que está inflando. En este caso está inflando un TextView
. Dado que TextView
extiende desde View
el compilador no se quejará de ello, pero cuando intente usar la View
como TextView
su aplicación se bloqueará.
// create a new view TextView v = (TextView) LayoutInflater.from(parent.getContext()) .inflate(R.layout.my_text_view, parent, false);
Cambiar View
a TextView
.
¿Has probado esto?
ViewHolder vh = new ViewHolder((TextView) v);
El constructor en el ViewHolder tiene un TextView. Por lo tanto, no puede enviar Ver a ViewHolder. Intente almacenar en caché la vista en TextView de esta manera.
ViewHolder vh = new ViewHolder((TextView)v);
- Personalización de la dirección de desplazamiento de la presentación de tabulación
- ¿Por qué no puedo acceder al punto de interrupción cuando empiezo a depurar la aplicación Android de Xamarin?