2017-05-22 17 views
0

我有一個recyclerview,我想要顯示兩種佈局。爲此,我使用視圖類型和不同的視圖持有者。並相應地加載,但我只能看到項目列表,而不是標題佈局。不能看到在回收視圖中的另一種視圖類型

沒有發現任何錯誤來識別任何問題。正如我調試發現,它不會進入另一種視圖類型,佈局沒有得到顯示。

適配器:

public class TransportListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 

     private Context context; 
     private ArrayList<Transport> list; 
     private TransportListFragment transportListFragment; 
     static final int TYPE_LOAD_TRANSPORT = 0, TYPE_LOAD_PROGRESS = 2, LOAD_TRANSPORT_ITEMS_HEADER = 1; 


     public TransportListAdapter(Context context, ArrayList<Transport> list,TransportListFragment transportListFragment) { 
      this.context = context; 
      this.list = list; 
      this.transportListFragment = transportListFragment; 
     } 

     @Override 
     public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, final int viewType) { 

      RecyclerView.ViewHolder viewHolder = null; 
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      switch (viewType) { 

       case LOAD_TRANSPORT_ITEMS_HEADER: 
        View v_order_header = inflater.inflate(R.layout.transport_rout, parent, false); 
        viewHolder = new LoadTransportHeader(v_order_header); 
        break; 

       case TYPE_LOAD_TRANSPORT: 
        View v_order_items = inflater.inflate(R.layout.transport_item, parent, false); 
        viewHolder = new TransportListHolder(v_order_items); 
        break; 

      } 

      return viewHolder; 
     } 

     @Override 
     public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

      if (getItemViewType(position) == TYPE_LOAD_TRANSPORT) { 
       TransportListHolder transportListHolder = (TransportListHolder) holder; 
       retriveAllTransports(transportListHolder, position); 
      } 
      else if (getItemViewType(position) == LOAD_TRANSPORT_ITEMS_HEADER) { 
       LoadTransportHeader loadTransportHeader = (LoadTransportHeader) holder; 
       retriveTransportHeader(loadTransportHeader, position); 
      } 

     } 

     @Override 
     public int getItemViewType(int position) { 

      Object obj = list.get(position); 

      if (obj instanceof Transport) { 
       return TYPE_LOAD_TRANSPORT; 
      } 
      else if (obj instanceof LoadTransportHeader) return LOAD_TRANSPORT_ITEMS_HEADER; 

      return super.getItemViewType(position); 
     } 

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

    public void retriveTransportHeader(final LoadTransportHeader holder, int position) { 

    } 
     public void retriveAllTransports(final TransportListHolder holder, int position) { 

      final Transport data = (Transport) list.get(position); 

      holder.tv_product.setText(data.getmProductName()); 
      holder.tv_dateTime.setText(data.getmDateTime()); 
      holder.tv_username.setText(String.valueOf(data.getmUserName())); 

      String url = "http://104.131.162.126/testslim/v1/src/images/" + data.getmProductImg(); 

      Picasso.with(context) 
        .load(url) 
        .resize(400, 400) 
        .placeholder(R.drawable.product) 
        .error(R.drawable.product) 
        .into(holder.img_product); 
     } 

} 

請幫助。謝謝..

+0

刪除返回super.getItemViewType(位置);從getItemViewType –

+0

那麼我應該返回什麼?它要求返回聲明。 @DivyeshPatel – Sid

+0

然後返回除視圖持有者類型之外的任何內容 –

回答

0

ArrayList list;

你只是路過一個類型的數組,這是交通運輸

public int getItemViewType(int position) { 

     Object obj = list.get(position); // list is of only type Transport 

     if (obj instanceof Transport) { 
      return TYPE_LOAD_TRANSPORT; // it will always return this 
     } 
     else if (obj instanceof LoadTransportHeader) return LOAD_TRANSPORT_ITEMS_HEADER; 

     return super.getItemViewType(position); 
    } 
0

變化private ArrayList<Transport>列表爲private ArrayList<Object> list;

它表明一個類型,因爲你只列出運輸的對象。

public int getItemViewType(int position) { 

     Object obj = list.get(position); 

     if (obj instanceof Transport) { 
      return TYPE_LOAD_TRANSPORT; 
     } 
     else if (obj instanceof LoadTransportHeader) 
      return LOAD_TRANSPORT_ITEMS_HEADER; 

     return super.getItemViewType(position); 
    } 
在Activty /片段

..

List<Object> objects = new Arraylist(); 
objects.add(new Transport("","","")); 
objects.add(new LoadTransportHeader("","","")); 
objects.add(new Transport("","","")); 
objects.add(new LoadTransportHeader("","","")); 
相關問題