package tw.showang.recycleradapterbase.example; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import java.util.List; import jp.wasabeef.glide.transformations.CropCircleTransformation; import tw.showang.recycleradapterbase.example.api.GitHubUserRepoApi.GetRepoResult; import tw.showang.recycleradapterbase.RecyclerAdapterBase; public class ExampleRepoAdapter extends RecyclerAdapterBase { private List<GetRepoResult> repoResultList; public ExampleRepoAdapter(List<GetRepoResult> dataList) { super(dataList); repoResultList = dataList; } @Override protected ViewHolder onCreateItemViewHolder(LayoutInflater inflater, ViewGroup parent, int viewType) { return new RepoItemViewHolder(inflater.inflate(R.layout.item_repo_info, parent, false)); } @Override protected void onBindItemViewHolder(ViewHolder viewHolder, int position) { RepoItemViewHolder vh = (RepoItemViewHolder) viewHolder; Context context = vh.itemView.getContext(); GetRepoResult repoInfo = repoResultList.get(position); vh.titleText.setText(repoInfo.name); vh.ownerNameText.setText(repoInfo.ownerInfo.name); vh.starTextView.setText(String.valueOf(repoInfo.startedCount)); Glide.with(context).load(repoInfo.ownerInfo.avatarUrl).bitmapTransform(new CropCircleTransformation(context)).into(vh.avatarImage); } @Override protected ViewHolder onCreateLoadMoreViewHolder(LayoutInflater inflater, ViewGroup parent) { return new LoadMoreViewHolder(inflater.inflate(R.layout.item_loadmore, parent, false)); } @Override protected void onBindLoadMoreViewHolder(ViewHolder viewHolder, boolean isLoadMoreFailed) { super.onBindLoadMoreViewHolder(viewHolder, isLoadMoreFailed); LoadMoreViewHolder vh = (LoadMoreViewHolder) viewHolder; vh.progressBar.setVisibility(isLoadMoreFailed ? View.GONE : View.VISIBLE); vh.failText.setVisibility(isLoadMoreFailed ? View.VISIBLE : View.GONE); } public void addItem(List<GetRepoResult> response) { repoResultList.addAll(response); } public void onConfigurationChanged(Context context) { notifyDataSetChanged(); } private class RepoItemViewHolder extends RecyclerView.ViewHolder { TextView titleText; TextView ownerNameText; TextView starTextView; ImageView avatarImage; RepoItemViewHolder(View itemView) { super(itemView); titleText = (TextView) itemView.findViewById(R.id.repoItem_titleTextView); ownerNameText = (TextView) itemView.findViewById(R.id.repoItem_ownerNameTextView); avatarImage = (ImageView) itemView.findViewById(R.id.repoItem_avatarImageView); starTextView = (TextView) itemView.findViewById(R.id.repoItem_startTextView); } } private class LoadMoreViewHolder extends RecyclerView.ViewHolder { View progressBar; View failText; LoadMoreViewHolder(View itemView) { super(itemView); progressBar = itemView.findViewById(R.id.loadmore_progress); failText = itemView.findViewById(R.id.loadmore_failText); } } }