Proyectos de Subversion Android Microlearning

Rev

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();
    }
}