5 votes

comment créer un Recyclerview circulaire fermé avec un adaptateur Recycler personnalisé ?

Il s'agit peut-être d'un doublon, mais la réponse appropriée n'est toujours pas disponible. Je me suis référé à ce y ce y ce

Comme indiqué dans les liens, je souhaite mettre en place une vue recyclée qui soit circulaire, c'est à dire

[vue 1]-[vue 2]....-[vue N-1]-[vue N]-[vue 1].....et ainsi de suite

Puisqu'il n'y a pas de méthodes de surcharge pour obtenir la vue et l'élément dans recyclerview, je ne peux pas réussir. ne peux pas réussir.

Merci d'avance !

mon code adaptateur de recycleur

public class HorizontalRecyclerAdapter extends RecyclerView.Adapter<HorizontalRecyclerAdapter.ProductViewHolder> {

    List<Product> products;
    private Context mContext;
    ImageLoader imageLoader;

    HorizontalRecyclerAdapter(List<Product> products, Context mContext) {
        this.products = products;
        this.mContext = mContext;

    }

    @Override
    public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.product_layout, parent, false);
        return new ProductViewHolder(v);
    }

    @Override
    public void onBindViewHolder(final ProductViewHolder holder, int position) {

        imageLoader = SingletonRequestQueue.getInstance(mContext).getImageLoader();
        String URL = products.get(position).getProductImageUrl();
        holder.progressBar.setVisibility(View.VISIBLE);
        /* to hide the progress bar after image response */

        imageLoader.get(URL, new ImageLoader.ImageListener() {
            @Override
            public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
                if (response != null) {
                    Bitmap bitmap = response.getBitmap();
                    if (bitmap != null) {
                        holder.progressBar.setVisibility(View.GONE);
                    }
                }
            }
            @Override
            public void onErrorResponse(VolleyError error) {}
        });
        holder.itemImage.setImageUrl(URL, imageLoader);
        holder.itemName.setText(products.get(position).getProductName());
        holder.itemPrice.setText("₹ "+products.get(position).getProductPrice());
        holder.sellerLogo.setImageResource(products.get(position).getProductSellerId());

    }

    @Override
    public int getItemCount() {
        return products.size();
    }

    public static class ProductViewHolder extends RecyclerView.ViewHolder {

        NetworkImageView itemImage;
        NetworkImageView sellerLogo;
        TextView itemName;
        TextView itemPrice;
        ProgressBar progressBar;

        public ProductViewHolder(View itemView) {
            super(itemView);
            itemImage = (NetworkImageView) itemView.findViewById(R.id.product_image);
            sellerLogo = (NetworkImageView) itemView.findViewById(R.id.product_seller);
            itemName = (TextView) itemView.findViewById(R.id.product_name);
            itemPrice = (TextView) itemView.findViewById(R.id.product_price);
            progressBar = (ProgressBar)itemView.findViewById(R.id.network_image_progressbar);

        }
    }
}

4voto

Vedant Aggrawal Points 134

J'ai cherché un peu plus loin et j'ai trouvé une solution qui fonctionne. ici Je l'ai testé et il fonctionne bien. je ferme cette question. merci !

0voto

Nikhil Gupta Points 558

Vérifier ma réponse ici . J'ai essayé, cela fonctionne pour la vue du recycleur et crée un effet de défilement sans fin à la fin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X