/*
* Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.user.ui;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
import me.zhanghai.android.douya.R;
import me.zhanghai.android.douya.network.api.info.apiv2.SimpleUser;
import me.zhanghai.android.douya.profile.ui.ProfileActivity;
import me.zhanghai.android.douya.ui.SimpleAdapter;
import me.zhanghai.android.douya.util.ImageUtils;
import me.zhanghai.android.douya.util.RecyclerViewUtils;
import me.zhanghai.android.douya.util.ViewUtils;
public abstract class BaseUserAdapter extends SimpleAdapter<SimpleUser, BaseUserAdapter.ViewHolder> {
public BaseUserAdapter() {
setHasStableIds(true);
}
@Override
public long getItemId(int position) {
//noinspection deprecation
return getItem(position).id;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(ViewUtils.inflate(getLayoutResource(), parent));
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
final Context context = RecyclerViewUtils.getContext(holder);
final SimpleUser user = getItem(position);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
context.startActivity(ProfileActivity.makeIntent(user, context));
}
});
ImageUtils.loadAvatar(holder.avatarImage, user.avatar);
holder.nameText.setText(user.name);
//noinspection deprecation
holder.descriptionText.setText(user.uid);
}
abstract protected int getLayoutResource();
static class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.avatar)
public ImageView avatarImage;
@BindView(R.id.name)
public TextView nameText;
@BindView(R.id.description)
public TextView descriptionText;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
}
}
}