diff options
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderUserAdapter.java')
-rw-r--r-- | WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderUserAdapter.java | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderUserAdapter.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderUserAdapter.java new file mode 100644 index 000000000..00e6ce023 --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderUserAdapter.java @@ -0,0 +1,112 @@ +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()); + } + } +} |