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 constructor
public 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
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return adapterHashMap.get(viewType).onCreateViewHolder(parent, viewType);
}
// binds the data to the TextView in each row
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
adapterHashMap.get(getItemViewType(position)).onBindViewHolder(holder, mData.get(position));
}
@Override
public int getItemViewType(int position) {
if(position == 0) {
return ITimelineDelegateAdapter.HEADER;
} else if (position == ( mData.size() - 1)) {
return ITimelineDelegateAdapter.ITEM;
} else {
return ITimelineDelegateAdapter.LINE;
}
}
@Override
public int getItemCount() {
return mData.size();
}
}