如何使用自定义Recycler适配器创建封闭循环Recyclerview? [英] how to create closed circular Recyclerview with custom Recycler adapter?
问题描述
这可能是重复的,但仍然没有正确的答案。
我提到了这个和< a href =https://stackoverflow.com/questions/28492359/circular-recyclerview>这个和这个
如链接中所述,我希望实施循环的回收查看,即
[查看1] - [查看2] ....- [查看N-1] - [查看N] - [查看1] .....等等
由于没有覆盖方法来获取View并在Recyclerview中获取物品,因此我
无法成功。
<请尽快帮助。谢谢!
我的回收商适配器代码
公共类HorizontalRecyclerAdapter扩展了RecyclerView.Adapter< HorizontalRecyclerAdapter.ProductViewHolder> {
列表<产品>产品;
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);
返回新的ProductViewHolder(v);
}
@Override
public void onBindViewHolder(最终ProductViewHolder持有者,int位置){
imageLoader = SingletonRequestQueue.getInstance(mContext).getImageLoader( );
String URL = products.get(position).getProductImageUrl();
holder.progressBar.setVisibility(View.VISIBLE);
/ *隐藏图像响应后的进度条* /
imageLoader.get(URL,new ImageLoader.ImageListener(){
@Override
public void onResponse (ImageLoader.ImageContainer响应,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();
}
公共静态类ProductViewHolder扩展了RecyclerView.ViewHolder {
NetworkImageView itemImage;
NetworkImageView sellerLogo;
TextView itemName;
TextView itemPrice;
ProgressBar progressBar;
public ProductViewHolder(查看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);
}
}
}
我深入了解并发现了一个有效的解决方案/ hack 这里。我测试了它,它运作良好。我正在关闭这个问题。谢谢!
this might be a possible duplicate , but proper answer is still not available. I referred to this and this and this
As stated in the links I wish to implement a recyclerview which is circular ie
[view 1]-[view 2]....-[view N-1]-[view N]-[view 1].....and so on
Since there are no override methods to get View and get Item in recyclerview , I am unable to succeed.
please help.Thanks in Advance!
my recycler adapter code
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);
}
}
}
I looked in a little deep and found a working solution/hack here.I have tested it and it works well.I am closing this question. thanks!
这篇关于如何使用自定义Recycler适配器创建封闭循环Recyclerview?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!