我有一個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);
}
}
請幫助。謝謝..
刪除返回super.getItemViewType(位置);從getItemViewType –
那麼我應該返回什麼?它要求返回聲明。 @DivyeshPatel – Sid
然後返回除視圖持有者類型之外的任何內容 –