package com.iamtheib.infiniterecyclerview.demo.adapter;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.LinearInterpolator;
import com.iamtheib.infiniterecyclerview.demo.R;
import com.iamtheib.infiniterecyclerview.demo.viewholder.DummyViewHolder;
import com.iamtheib.infiniterecyclerview.demo.viewholder.LoadingViewHolder;
import com.iamtheib.infiniterecyclerview.InfiniteAdapter;
import java.util.List;
/**
* Created by Saurabh on 6/2/16.
*/
public class SampleAdapter extends InfiniteAdapter<RecyclerView.ViewHolder> {
private List<String> sampleData;
private Context mContext;
public SampleAdapter(Context context, List<String> dummyData) {
mContext = context;
sampleData = dummyData;
}
@Override
public RecyclerView.ViewHolder getLoadingViewHolder(ViewGroup parent) {
View loadingView = LayoutInflater.from(mContext).inflate(R.layout.list_loading_view, parent, false);
return new LoadingViewHolder(loadingView);
}
@Override
public int getCount() {
return sampleData.size();
}
@Override
public int getViewType(int position) {
return 1;
}
@Override
public RecyclerView.ViewHolder onCreateView(ViewGroup parent, int viewType) {
View dummyView = LayoutInflater.from(mContext).inflate(R.layout.item_dummy, parent, false);
return new DummyViewHolder(dummyView);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof LoadingViewHolder) {
LoadingViewHolder loadingViewHolder = (LoadingViewHolder) holder;
ObjectAnimator animator = ObjectAnimator.ofFloat(loadingViewHolder.loadingImage, "rotation", 0, 360);
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.setInterpolator(new LinearInterpolator());
animator.setDuration(1000);
animator.start();
return;
}
else {
((DummyViewHolder) holder).tv.setText(sampleData.get(position));
}
super.onBindViewHolder(holder, position);
}
@Override
public int getVisibleThreshold() {
return 2;
}
}