| 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()); |
| } |
| } |
| } |