aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderUserAdapter.java
diff options
context:
space:
mode:
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.java112
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());
+ }
+ }
+}