본문 바로가기
ANDROID

RecycleView Adapter

by GoodDev 2015. 10. 15.
=> RecycleView Adapter 예제
/**
* Created by cscho on 2015-08-21.
*/
public class ThemeListAdapter extends RecyclerView.Adapter<ThemeListAdapter.ThemeHolder> {
private static final String TAG = "ThemeListAdapter";
private final LayoutInflater mLayoutInflater;
private DisplayImageOptions options;
private Context mContext;
private String mSystemClock;
private ArrayList<ThemeListItem> mThemeList = null;

private SimpleImageLoadingListener mImageLoadingListener = new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
}

@Override
public void onLoadingCancelled(String imageUri, View view) {
super.onLoadingCancelled(imageUri, view);
}

@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
String message =
null;
switch (failReason.getType()) {
case IO_ERROR:
message =
"Input/Output error";
break;
case DECODING_ERROR:
message =
"Image can't be decoded";
break;
case NETWORK_DENIED:
message =
"Downloads are denied";
break;
case OUT_OF_MEMORY:
message =
"Out Of Memory error";
break;
case UNKNOWN:
message =
"Unknown error";
break;
}
Toast.
makeText(view.getContext(), message, Toast.LENGTH_SHORT).show();
}
};

public static class ThemeHolder extends RecyclerView.ViewHolder {
CSRoundedImageView
civ_background;
CSRoundedImageView
civ_gradeffect;
int postion;
TextView
tv_title;
TextView
tv_themename;
TextView
tv_storycount;

public ThemeHolder(View view) {
super(view);

civ_background = (CSRoundedImageView)view.findViewById(R.id.civ_background);
civ_gradeffect = (CSRoundedImageView)view.findViewById(R.id.civ_gradeffect);
tv_title = (TextView)view.findViewById(R.id.tv_title);
tv_themename = (TextView)view.findViewById(R.id.tv_themename);
tv_storycount = (TextView)view.findViewById(R.id.tv_storycount);
}
}

public ThemeListAdapter(Context context) {
mContext = context;
mLayoutInflater = LayoutInflater.from(context);
mThemeList = new ArrayList<ThemeListItem>();

options = new DisplayImageOptions.Builder()
.resetViewBeforeLoading(
true)
.delayBeforeLoading(
500)
.cacheOnDisk(
true)
// .imageScaleType(ImageScaleType.EXACTLY)
.bitmapConfig(Bitmap.Config.RGB_565)
.considerExifParams(
true)
.displayer(
new FadeInBitmapDisplayer(300))
.build();
}

public void setSystemClock(String clock) {
mSystemClock = clock;
}

@Override
public ThemeHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View view = mLayoutInflater.inflate(R.layout.row_theme_frame, parent, false);
return new ThemeHolder(view);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public void onBindViewHolder(ThemeHolder holder, int position) {
final View itemView = holder.itemView;
ThemeListItem item = getItem(position);
CSLog.
v(TAG, "postion = " + position + " imageurl = " + item.imgurl);
int size = 0;
if ( item.type == 1 ) {
size =
mContext.getResources().getDimensionPixelSize(R.dimen.theme_normal_size);
}
else {
size =
mContext.getResources().getDimensionPixelSize(R.dimen.theme_long_size);
}

final StaggeredGridLayoutManager.LayoutParams lp = (StaggeredGridLayoutManager.LayoutParams) itemView.getLayoutParams();
lp.
height = size;
itemView.setLayoutParams(lp);

holder.setIsRecyclable(
false);
holder.
tv_title.setText(Html.fromHtml(item.sub_title));
holder.
tv_themename.setText(item.title);
holder.
tv_storycount.setText(String.valueOf(item.total_count) + mContext.getResources().getString(R.string.home_theme_storyunit));

ImageLoader.
getInstance().displayImage(item.imgurl, holder.civ_background, options, mImageLoadingListener);
}

@Override
public int getItemCount() {
return mThemeList.size();
}

public void addAll(ArrayList<ThemeListItem> list) {
mThemeList.addAll(list);
notifyDataSetChanged();
}

public ThemeListItem getItem(int position) {
return mThemeList.get(position);
}

public void clear() {
mThemeList.clear();
notifyDataSetChanged();
}
}


댓글