reciclapp reciclaje para moviles jerapp funciona como aplicaciones aplicacion android android-layout android-recyclerview

android - reciclaje - como funciona reciclapp



Vista del reciclador de la lista de desplazamiento vertical con fila desplazable horizontal (2)

Gestores de diseño personalizados

  • StaticGridLayoutManager: cuadrícula de desplazamiento 2D con recuento de columnas variable según el conjunto de datos. Ventana de vistas visibles (no recicladas) es
    determinado estáticamente.
  • DynamicGridLayoutManager: cuadrícula de desplazamiento 2D en la que la ventana de vistas visibles se determina dinámicamente. Resultados en menos vistas en la memoria, pero el rendimiento de desplazamiento es cuestionable.

He encontrado el mismo problema y encontré esta biblioteca. Tal vez te ayude. https://github.com/devunwired/recyclerview-playground

Más detalles sobre RecyclerView LayoutManager: http://wiresareobsolete.com/2014/09/building-a-recyclerview-layoutmanager-part-1/

p / s: Para su caso http://lucasr.org/2014/07/31/the-new-twowayview/

Quiero un RecyclerView en el que tenemos una lista de elementos de desplazamiento vertical. De esta lista desplazable de elementos, algunos deberían poder desplazarse en dirección horizontal. Como se muestra en la imagen de abajo

¿Alguien por favor me puede guiar cómo hacerlo?

Gracias.


Ya que este parece ser un problema común, pensé que compartiría mi implementación simple de esto. Es bastante fácil lograr esto usando un RecyclerView. Hice esto mientras trataba de crear una lista horizontal de imágenes desplazables cuando se tomaba una imagen con la cámara del dispositivo. He pegado la sección correspondiente del adaptador.

Utilicé un RecyclerView que usaba un LinearLayoutManager con la orientación establecida en horizontal.

El adaptador en sí es bastante simple y es (por favor, solo las secciones relevantes están aquí):

import android.content.Context; import android.graphics.Bitmap; import android.media.Image; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.ebay.lockers.R; import com.ebay.lockers.utils.AsyncDrawable; import com.ebay.lockers.utils.BitmapUtils; import com.ebay.lockers.utils.BitmapWorkerTask; import java.io.File; import java.util.List; /** * Created by Sunil on 6/17/2016. */ public class ImagesHorizontalListAdapter extends RecyclerView.Adapter<ImagesHorizontalListAdapter.ImagesViewHolder> { private Context context; private List<File> imageFiles; public ImagesHorizontalListAdapter(Context context, List<File> imageFiles) { this.context = context; this.imageFiles = imageFiles; } @Override public ImagesHorizontalListAdapter.ImagesViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View layout = LayoutInflater.from(context).inflate(R.layout.simple_image_view, parent, false); ImagesViewHolder viewHolder = new ImagesViewHolder(layout); return viewHolder; } @Override public void onBindViewHolder(final ImagesHorizontalListAdapter.ImagesViewHolder holder, final int position) { int availableWidth = context.getResources().getDisplayMetrics().widthPixels; int imageWidth = availableWidth/4; // Number of images to be shown by default int imageHeight = imageWidth*4/3; final int minDimenForScaling = Math.min(imageWidth, imageHeight); holder.image.post(new Runnable() { @Override public void run() { loadBitmap(imageFiles.get(position), holder.image, minDimenForScaling, minDimenForScaling); } }); } @Override public int getItemCount() { return imageFiles.size(); } public void loadBitmap(File file, ImageView imageView, int reqWidth, int reqHeight) { if(BitmapUtils.cancelPotentialWork(file, imageView)) { final BitmapWorkerTask task = new BitmapWorkerTask(imageView, reqWidth, reqHeight); // The second Bitmap parameter is a placeholder image // Should consider animation; TO DO -- final AsyncDrawable asyncDrawable = new AsyncDrawable(context.getResources(), null, task); imageView.setImageDrawable(asyncDrawable); task.execute(file); } } public static class ImagesViewHolder extends RecyclerView.ViewHolder { // each data item is an image ImageView image; public ImagesViewHolder(View layout) { super(layout); this.image = (ImageView) layout.findViewById(R.id.image); } } }