HorizontalGridView / RecyclerLa posición de desplazamiento se restablece una vez que la imagen de Picasso se carga
Tengo un HorizontalGridView y todo está funcionando bien, sin embargo estoy cargando imágenes con Picasso y siempre que una imagen se carga, el HorizontalGridView se encaja de nuevo en el primer elemento / posición de desplazamiento inicial. También tengo un fragmento del mapa en la actividad y observo que cuando el mapa es interactuado con, el HorizontalGridView exhibe el mismo comportamiento. A continuación se muestra el código del adaptador. Por favor ayuda, han estado atrapados en éste por un par de días ahora …
public class GridElementAdapter extends RecyclerView.Adapter<GridElementAdapter.SimpleViewHolder>{ private Context context; private Deal[] mDeals; public GridElementAdapter(Context context, Deal[] deals){ this.context = context; this.mDeals = deals; } public static class SimpleViewHolder extends RecyclerView.ViewHolder { public final ImageView dealImage; public final TextView dealTitle; public final TextView dealSubtitle; public final TextView dealPrice; public final TextView dealTime; public final TextView dealDays; public SimpleViewHolder(View view) { super(view); dealImage = (ImageView) view.findViewById(R.id.gridDealImageView); dealTitle = (TextView) view.findViewById(R.id.gridTitleLabel); dealSubtitle = (TextView) view.findViewById(R.id.gridSubtitleLabel); dealPrice = (TextView) view.findViewById(R.id.gridPriceLabel); dealTime = (TextView) view.findViewById(R.id.gridAvailableTimeLabel); dealDays = (TextView) view.findViewById(R.id.gridAvailableDaysLabel); } } @Override public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final View view = LayoutInflater.from(this.context).inflate(R.layout.deal_grid_item, parent, false); return new SimpleViewHolder(view); } @Override public void onBindViewHolder(SimpleViewHolder holder, final int position) { String dealImageUrl = "http://api.cheapeat.com.au/deals/" + mDeals[position].getPhotoId() + "/photo"; Context context = holder.dealImage.getContext(); Picasso.with(context).load(dealImageUrl).placeholder(R.drawable.deal_image_placeholder).into(holder.dealImage); holder.dealTitle.setText(mDeals[position].getName()); holder.dealPrice.setText(mDeals[position].getPriceData()); holder.dealSubtitle.setText(mDeals[position].getDescription()); holder.dealTime.setText(mDeals[position].getAvailabilityTime()); holder.dealDays.setText(mDeals[position].getFormattedAvailableDays(mDeals[position].getAvailabilityDay())); } @Override public long getItemId(int position) { return position; } @Override public int getItemCount() { return this.mDeals.length; }
}
- ¿Cómo añadir una vista de pie de página en RECYCLER VIEW?
- Cierre del cursor en onPostExecute no produce nada
- Capaz de hacer clic en dos elementos al mismo tiempo en un RecyclerView
- Cómo animar el cambio de un gestor de diseño de la vista de reciclador
- RecyclerView oculta la barra de acción cuando se abre SoftKeyboard
- Recuperando onBindViewHolder al desplazarse por la vista Recycler
- Pulsar el botón de clic dentro de una fila en RecyclerView
- No se puede colocar la vista debajo de RecyclerView
- Detener el desplazamiento del usuario para establecer la posición en RecyclerView
- Hace notificydatasetchanged llamada onCreateViewHolder al usar RecyclerView
- ¿Por qué ListView y RecyclerView son focusableInTouchMode?
- Google Map Lite en CardView
- ViewHolder.getAdapterPosition () devuelve siempre -1
Así que finalmente logré resolver este. Resulta que no había configurado LayoutManager
para el HorizontalGridView
. En concreto, en la actividad en la que he configurado el adaptador:
// Had this horizontalGridView = (HorizontalGridView) findViewById(R.id.gridView); GridElementAdapter adapter = newGridElementAdapter(VenueProfileActivity.this, mDeals); horizontalGridView.setAdapter(adapter); // This needed to be added HorizontalGridView.LayoutManager layoutManager = new LinearLayoutManager(VenueProfileActivity.this, LinearLayoutManager.HORIZONTAL, false); horizontalGridView.setLayoutManager(layoutManager); horizontalGridView.setHasFixedSize(true);
Esperemos que esto ahorre algunos dolores de cabeza, como he visto esta pregunta flotando sin solución correcta todavía.
- Descargar la carátula del álbum de Internet en una aplicación Android
- ¿Cómo usar las API de startMethodTracing en Android?