AutorÃa | Ultima modificación | Ver Log |
package com.cesams.twogetskills.adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.ViewGroup;import androidx.recyclerview.widget.RecyclerView;import com.cesams.twogetskills.entity.UserLog;import com.cesams.twogetskills.skeleton.ITimelineDelegateAdapter;import com.cesams.twogetskills.skeleton.ITwoGetSkills;import java.util.HashMap;import java.util.List;public class TimelineListViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {private final static String TAG = "C2GS - TimelineListViewAdapter";private List<UserLog> mData;private LayoutInflater mInflater;private Context mContext;private ITwoGetSkills iTwoGetSkills;private HashMap<Integer, ITimelineDelegateAdapter> adapterHashMap;// data is passed into the constructorpublic TimelineListViewAdapter(Context context, List<UserLog> data) {this.mContext = context;this.iTwoGetSkills = (ITwoGetSkills) context;this.mInflater = LayoutInflater.from(context);this.mData = data;this.adapterHashMap = new HashMap<>();TimelineListViewHeaderAdapter headerAdapter = new TimelineListViewHeaderAdapter(mContext);TimelineListViewPointAdapter pointAdapter = new TimelineListViewPointAdapter(mContext);TimelineListViewItemAdapter itemAdapter = new TimelineListViewItemAdapter(mContext);adapterHashMap.put(ITimelineDelegateAdapter.HEADER, headerAdapter);adapterHashMap.put(ITimelineDelegateAdapter.LINE, pointAdapter);adapterHashMap.put(ITimelineDelegateAdapter.ITEM, itemAdapter);}// inflates the row layout from xml when needed@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {return adapterHashMap.get(viewType).onCreateViewHolder(parent, viewType);}// binds the data to the TextView in each row@Overridepublic void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {adapterHashMap.get(getItemViewType(position)).onBindViewHolder(holder, mData.get(position));}@Overridepublic int getItemViewType(int position) {if(position == 0) {return ITimelineDelegateAdapter.HEADER;} else if (position == ( mData.size() - 1)) {return ITimelineDelegateAdapter.ITEM;} else {return ITimelineDelegateAdapter.LINE;}}@Overridepublic int getItemCount() {return mData.size();}}