package com.zulip.android.activities; import android.content.Context; import android.support.annotation.ColorInt; import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import com.zulip.android.R; import com.zulip.android.util.AuthClickListener; import java.util.List; /** * Adapter used for the RecyclerView here{@link DevAuthActivity} for showing Emails in the DevAuthBackend */ class AuthEmailAdapter extends RecyclerView.Adapter<AuthEmailAdapter.AuthEmailViewHolder> { private static final int VIEW_TYPE_HEADER = 0; private static final int VIEW_TYPE_ADMIN = 1; private static final int VIEW_TYPE_USER = 2; private static AuthClickListener authClickListener; private List<String> emails; private int userStringPosition; //Position of the User String header private @ColorInt int devAuthUserColor; private @ColorInt int devAuthAdminColor; AuthEmailAdapter(List<String> emails, int directAdminSize, Context context) { this.userStringPosition = directAdminSize + 1; //+1 due to the Administrator String this.emails = emails; devAuthUserColor = ContextCompat.getColor(context, R.color.dev_auth_user); devAuthAdminColor = ContextCompat.getColor(context, R.color.dev_auth_admin); } @Override public AuthEmailViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = null; if (viewType == VIEW_TYPE_HEADER) v = LayoutInflater.from(parent.getContext()).inflate(R.layout.dev_auth_header, parent, false); else v = LayoutInflater.from(parent.getContext()).inflate(R.layout.dev_auth_row, parent, false); return new AuthEmailViewHolder(v); } @Override public void onBindViewHolder(AuthEmailViewHolder holder, int position) { if (position == 0) { if (userStringPosition == 1) ((TextView) holder.view).setText(R.string.admin_none); //Show none if no admins else ((TextView) holder.view).setText(R.string.admin); } else if (position == userStringPosition) ((TextView) holder.view).setText(R.string.normal_user); else if (position > userStringPosition) { ((Button) holder.view).setText(emails.get(position - 2)); holder.view.setBackgroundColor(devAuthUserColor); } else { ((Button) holder.view).setText(emails.get(position - 1)); holder.view.setBackgroundColor(devAuthAdminColor); } } @Override public int getItemCount() { return emails.size() + 2; //+2 due to the two headers {"Admin and user"} } @Override public int getItemViewType(int position) { if (position == 0 || position == userStringPosition) return VIEW_TYPE_HEADER; if (position > userStringPosition) return VIEW_TYPE_USER; else return VIEW_TYPE_ADMIN; } void setOnItemClickListener(AuthClickListener authClickListener) { AuthEmailAdapter.authClickListener = authClickListener; } class AuthEmailViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { View view; AuthEmailViewHolder(View itemView) { super(itemView); view = itemView.findViewById(android.R.id.text1); if (view instanceof Button) { view.setOnClickListener(this); } } @Override public void onClick(View v) { authClickListener.onItemClick(((Button) v).getText().toString()); } } }