blob: 00e6ce023f608be70b3002b99b02cfd63956ff03 [file] [log] [blame]
package org.wordpress.android.ui.reader.adapters;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import org.wordpress.android.R;
import org.wordpress.android.models.ReaderUser;
import org.wordpress.android.models.ReaderUserList;
import org.wordpress.android.ui.reader.ReaderActivityLauncher;
import org.wordpress.android.ui.reader.ReaderInterfaces.DataLoadedListener;
import org.wordpress.android.util.GravatarUtils;
import org.wordpress.android.widgets.WPNetworkImageView;
/**
* owner must call setUsers() with the list of
* users to display
*/
public class ReaderUserAdapter extends RecyclerView.Adapter<ReaderUserAdapter.UserViewHolder> {
private final ReaderUserList mUsers = new ReaderUserList();
private DataLoadedListener mDataLoadedListener;
private final int mAvatarSz;
public ReaderUserAdapter(Context context) {
super();
mAvatarSz = context.getResources().getDimensionPixelSize(R.dimen.avatar_sz_small);
setHasStableIds(true);
}
public void setDataLoadedListener(DataLoadedListener listener) {
mDataLoadedListener = listener;
}
@Override
public int getItemCount() {
return mUsers.size();
}
private boolean isEmpty() {
return (getItemCount() == 0);
}
@Override
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.reader_listitem_user, parent, false);
return new UserViewHolder(view);
}
@Override
public void onBindViewHolder(UserViewHolder holder, int position) {
final ReaderUser user = mUsers.get(position);
holder.txtName.setText(user.getDisplayName());
if (user.hasUrl()) {
holder.txtUrl.setVisibility(View.VISIBLE);
holder.txtUrl.setText(user.getUrlDomain());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (user.hasBlogId()) {
ReaderActivityLauncher.showReaderBlogPreview(
v.getContext(),
user.blogId);
}
}
});
} else {
holder.txtUrl.setVisibility(View.GONE);
holder.itemView.setOnClickListener(null);
}
if (user.hasAvatarUrl()) {
holder.imgAvatar.setImageUrl(
GravatarUtils.fixGravatarUrl(user.getAvatarUrl(), mAvatarSz),
WPNetworkImageView.ImageType.AVATAR);
} else {
holder.imgAvatar.showDefaultGravatarImage();
}
}
@Override
public long getItemId(int position) {
return mUsers.get(position).userId;
}
class UserViewHolder extends RecyclerView.ViewHolder {
private final TextView txtName;
private final TextView txtUrl;
private final WPNetworkImageView imgAvatar;
public UserViewHolder(View view) {
super(view);
txtName = (TextView) view.findViewById(R.id.text_name);
txtUrl = (TextView) view.findViewById(R.id.text_url);
imgAvatar = (WPNetworkImageView) view.findViewById(R.id.image_avatar);
}
}
public void setUsers(final ReaderUserList users) {
mUsers.clear();
if (users != null && users.size() > 0) {
mUsers.addAll(users);
}
notifyDataSetChanged();
if (mDataLoadedListener != null) {
mDataLoadedListener.onDataLoaded(isEmpty());
}
}
}