2017-03-06 109 views
1

第一次數據填充適當的。但是,當我滾動recyclerview從下到上的所有數據和它的位置混亂。我嘗試添加 itemViewHolder.setIsRecyclable(false); setHasStableIds(false)但沒有任何工程 內垂直recyclerview試圖填充水平recyclerviewRecyclerview索引位置的混亂數據

public HomeRecyclerViewAdapter(Context context, Home homeModel) { 
     this.context = context; 
     this.homeModel = homeModel; 
    } 
@Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     if (viewType == TYPE_HEADER) { 
      View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.homefragment_header, parent, false); 
      return new HeaderViewHolder(v); 
     } else if (viewType == TYPE_ITEM) { 
      View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_homefragment, parent, false); 
      return new ItemViewHolder(v); 
     } else if (viewType == PRODUCT_ITEM) { 
      View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_productlines, parent, false); 
      return new ProductLinesItemHolder(v); 
     } else if (viewType == SHOPS_ITEM) { 
      View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_productlines, parent, false); 
      return new ShopsOfWeekItemHolder(v); 
     } 
     return null; 
    } 
@Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
     if (position == 0) { 
      if (holder instanceof HeaderViewHolder) { 
       // load data in slider 
      } 
     } else if (holder instanceof ItemViewHolder) { 
      ItemViewHolder itemViewHolder = (ItemViewHolder) holder; 
      if (homeModel.getCategories().get(0) != null) { 
       if (position == 1) { 
        //load data in category recyclerview 
        holder.setIsRecyclable(false); 
       } 
      } 
     } else if (holder instanceof ProductLinesItemHolder) { 
      ProductLinesItemHolder itemViewHolder = (ProductLinesItemHolder) holder; 
      if (homeModel.getProductLines() != null) { 
       if (position > 1 && pos <= homeModel.getProductLines().size()-1) { 
        Log.d("HomeRecycler","pos:"+pos); 
        Log.d("HomeRecycler","position:"+ (position-2)); 
         setRecyclerView(2, itemViewHolder); 
         Log.d("HomeRecycler","pos:"+homeModel.getProductLines().get(pos).getName()); 
         itemViewHolder.txtProductName.setText(homeModel.getProductLines().get(pos).getName()); 
         itemViewHolder.txtViewAllShops.setVisibility(View.GONE); 
         populateProductLinesItem(itemViewHolder, homeModel.getProductLines().get(pos)); 
         pos = pos + 1; 

       } 
      } 
     } 
private void populateProductLinesItem(ProductLinesItemHolder itemViewHolder, ProductLines productLines) { 
     ProductLinesItemAdapter productLinesItemAdapter = new ProductLinesItemAdapter(context, productLines.getItems(), clickEventOfProductsItemListener); 
     itemViewHolder.prodLinesRecyclerView.setAdapter(productLinesItemAdapter); 
     productLinesItemAdapter.notifyDataSetChanged(); 
    } 

能有人請建議?如何避免這個問題? 更多的代碼:在此基礎上https://gist.github.com/anonymous/7785cdd97b5c27886c81f321c8965930

回答

0

但是當我滾動從底部到頂部搞砸所有數據和它的位置recyclerview。

也有類似的問題,這裏的SO Post吧!