我有一個RecyclerView併成功地修改了一些數據。我有個問題。在onBindViewHolder方法中,我嘗試在線性佈局中添加自定義視圖。自定義視圖已成功添加,但向上或向下滾動視圖是重複的。我只想添加一件物品。如何在RecyclerView.Adapter中添加自定義視圖
我的代碼:
public class TrainsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public ArrayList<Train> trains;
public Context context;
private LayoutInflater inflater;
public OnItemClickListener mOnItemClickListener;
public void setmOnItemClickListener(OnItemClickListener mOnItemClickListener) {
this.mOnItemClickListener = mOnItemClickListener;
}
public class GenericViewHolder extends RecyclerView.ViewHolder {
public TextView stationName;
public LinearLayout vagoncontainer;
public GenericViewHolder(View view) {
super(view);
stationName = (TextView) view.findViewById(R.id.station_item_name);
vagoncontainer = (LinearLayout) view.findViewById(R.id.vagon_container);
}
}
public TrainsAdapter(Context context, ArrayList<Train> trains) {
this.context = context;
this.trains = trains;
inflater = LayoutInflater.from(context);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.trains_adapter_item, parent, false);
GenericViewHolder holder = new GenericViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
if (holder instanceof GenericViewHolder) {
GenericViewHolder genericViewHolder = (GenericViewHolder) holder;
Train train = trains.get(position);
ArrayList<Vagons> vagons = train.getVagons();
for (int i = 0; i < vagons.size(); i++) {
LayoutInflater layoutInflater = LayoutInflater.from(context);
LinearLayout vagonView = (LinearLayout) layoutInflater.inflate(R.layout.trains_vagon_child, null);
Button button = (Button) vagonView.findViewById(R.id.button);
if (vagons.get(i).getEnable().equals("1"))
button.setVisibility(View.VISIBLE);
else
button.setVisibility(View.GONE);
button.setText(vagons.get(i).getName() + " " + vagons.get(i).getAmount());
genericViewHolder.vagoncontainer.addView(vagonView);
}
genericViewHolder.stationName.setText(train.getDeparture());
}
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemCount() {
return trains.size();
}
public Train getItem(int position) {
return trains.get(position);
}
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
}
我怎樣才能解決我的問題?
你爲什麼要使用內循環onBindViewHolder?嘗試刪除。 – tahsinRupam
,因爲在我的主要數據中包含一些Vagon的數據,並且我想按位置添加它們@ tahsinRupam – BekaKK
您是否想使用Train類作爲父級和Vagon類作爲子級來擴展RecyclerView? – jemsnaban