Last active
November 11, 2016 11:01
-
-
Save davinctor/abbb2aae0ad518eef33ecbe6e0bfc853 to your computer and use it in GitHub Desktop.
How to listen clicks on recyclerViewAdapter elements
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class UsersAdapter extends RecyclerView.Adapter<UsersAdapter.UserViewHolder> { | |
private Context mContext; | |
private LayoutInflater mLayoutInflater; | |
private List<User> mUsers; | |
private OnUserClickListener mOnUserClickListener; | |
private final View.OnClickListener mOnItemClickListener = new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
Object tag = v.getTag(); | |
if (tag instanceof UserViewHolder) { | |
UserViewHolder holder = (UserViewHolder) tag; | |
mOnUserClickListener.onUserClicked(holder.getAdapterPosition()); | |
} | |
} | |
}; | |
private final View.OnClickListener mOnLikeClickListener = new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
Object tag = v.getTag(); | |
if (tag instanceof UserViewHolder) { | |
UserViewHolder holder = (UserViewHolder) tag; | |
mOnUserClickListener.onLikeClicked(holder.getAdapterPosition()); | |
} | |
} | |
}; | |
private final View.OnClickListener mOnReplyClickListener = new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
Object tag = v.getTag(); | |
if (tag instanceof UserViewHolder) { | |
UserViewHolder holder = (UserViewHolder) tag; | |
mOnUserClickListener.onReplyClicked(holder.getAdapterPosition()); | |
} | |
} | |
}; | |
public UsersAdapter(Context context, List<User> data, OnUserClickListener onUserClickListener) { | |
mContext = context; | |
mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); | |
mUsers = data; | |
mOnUserClickListener = onUserClickListener; | |
} | |
@Override | |
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | |
View view = mLayoutInflater.inflate(000, null); | |
UserViewHolder userViewHolder = new UserViewHolder(view); | |
userViewHolder.itemView.setTag(userViewHolder); | |
userViewHolder.itemView.setOnClickListener(mOnItemClickListener); | |
userViewHolder.mButtonLike.setTag(userViewHolder); | |
userViewHolder.mButtonLike.setOnClickListener(mOnLikeClickListener); | |
userViewHolder.mButtonReply.setTag(userViewHolder); | |
userViewHolder.mButtonReply.setOnClickListener(mOnReplyClickListener); | |
return userViewHolder; | |
} | |
@Override | |
public void onBindViewHolder(UserViewHolder holder, int position) { | |
holder.bind(mUsers.get(position)); | |
} | |
@Override | |
public boolean onFailedToRecycleView(UserViewHolder holder) { | |
return true; | |
} | |
@Override | |
public int getItemCount() { | |
return mUsers.size(); | |
} | |
interface OnUserClickListener { | |
void onUserClicked(int position); | |
void onLikeClicked(int position); | |
void onReplyClicked(int position); | |
// etc... | |
} | |
static final class UserViewHolder extends RecyclerView.ViewHolder { | |
private Button mButtonLike; | |
private Button mButtonReply; | |
public UserViewHolder(View itemView) { | |
super(itemView); | |
} | |
private void bind(User user) { | |
// bind logic | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class UsersAdapter extends RecyclerView.Adapter<UsersAdapter.UserViewHolder> { | |
private Context mContext; | |
private LayoutInflater mLayoutInflater; | |
private List<User> mUsers; | |
private OnUserClickListener mOnUserClickListener; | |
private final View.OnClickListener mOnItemClickListener = new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
Object tag = v.getTag(); | |
if (tag instanceof UserViewHolder) { | |
UserViewHolder holder = (UserViewHolder) tag; | |
mOnUserClickListener.onUserClicked(mUsers.get(holder.getAdapterPosition())); | |
} | |
} | |
}; | |
private final View.OnClickListener mOnLikeClickListener = new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
Object tag = v.getTag(); | |
if (tag instanceof UserViewHolder) { | |
UserViewHolder holder = (UserViewHolder) tag; | |
mOnUserClickListener.onLikeClicked(mUsers.get(holder.getAdapterPosition())); | |
} | |
} | |
}; | |
private final View.OnClickListener mOnReplyClickListener = new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
Object tag = v.getTag(); | |
if (tag instanceof UserViewHolder) { | |
UserViewHolder holder = (UserViewHolder) tag; | |
mOnUserClickListener.onReplyClicked(mUsers.get(holder.getAdapterPosition())); | |
} | |
} | |
}; | |
public UsersAdapter(Context context, List<User> data, OnUserClickListener onUserClickListener) { | |
mContext = context; | |
mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); | |
mUsers = data; | |
mOnUserClickListener = onUserClickListener; | |
} | |
@Override | |
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | |
View view = mLayoutInflater.inflate(000, null); | |
UserViewHolder userViewHolder = new UserViewHolder(view); | |
userViewHolder.itemView.setTag(userViewHolder); | |
userViewHolder.itemView.setOnClickListener(mOnItemClickListener); | |
userViewHolder.mButtonLike.setTag(userViewHolder); | |
userViewHolder.mButtonLike.setOnClickListener(mOnLikeClickListener); | |
userViewHolder.mButtonReply.setTag(userViewHolder); | |
userViewHolder.mButtonReply.setOnClickListener(mOnReplyClickListener); | |
return userViewHolder; | |
} | |
@Override | |
public void onBindViewHolder(UserViewHolder holder, int position) { | |
holder.bind(mUsers.get(position)); | |
} | |
@Override | |
public boolean onFailedToRecycleView(UserViewHolder holder) { | |
return true; | |
} | |
@Override | |
public int getItemCount() { | |
return mUsers.size(); | |
} | |
interface OnUserClickListener { | |
void onUserClicked(User user); | |
void onLikeClicked(User user); | |
void onReplyClicked(User user); | |
// etc... | |
} | |
static final class UserViewHolder extends RecyclerView.ViewHolder { | |
private Button mButtonLike; | |
private Button mButtonReply; | |
public UserViewHolder(View itemView) { | |
super(itemView); | |
} | |
private void bind(User user) { | |
// bind logic | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class UsersAdapter extends RecyclerView.Adapter<UsersAdapter.UserViewHolder> { | |
private Context mContext; | |
private LayoutInflater mLayoutInflater; | |
private List<User> mUsers; | |
private OnUserClickListener mOnUserClickListener; | |
public UsersAdapter(Context context, List<User> data, OnUserClickListener onUserClickListener) { | |
mContext = context; | |
mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); | |
mUsers = data; | |
mOnUserClickListener = onUserClickListener; | |
} | |
@Override | |
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | |
View view = mLayoutInflater.inflate(000, null); | |
return new UserViewHolder(view, mOnUserClickListener); | |
} | |
@Override | |
public void onBindViewHolder(UserViewHolder holder, int position) { | |
holder.bind(mUsers.get(position)); | |
} | |
@Override | |
public boolean onFailedToRecycleView(UserViewHolder holder) { | |
return true; | |
} | |
@Override | |
public int getItemCount() { | |
return mUsers.size(); | |
} | |
interface OnUserClickListener { | |
void onUserClicked(int position); | |
void onLikeClicked(int position); | |
void onReplyClicked(int position); | |
// etc... | |
} | |
static final class UserViewHolder extends RecyclerView.ViewHolder { | |
private Button mButtonLike; | |
private Button mButtonReply; | |
public UserViewHolder(View itemView, final OnUserClickListener onUserClickListener) { | |
super(itemView); | |
itemView.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
onUserClickListener.onUserClicked(getAdapterPosition()); | |
} | |
}); | |
mButtonLike.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
onUserClickListener.onLikeClicked(getAdapterPosition()); | |
} | |
}); | |
mButtonReply.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
onUserClickListener.onReplyClicked(getAdapterPosition()); | |
} | |
}); | |
} | |
private void bind(User user) { | |
// bind logic | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class UsersAdapter extends RecyclerView.Adapter<UsersAdapter.UserViewHolder> implements UserProvider { | |
private Context mContext; | |
private LayoutInflater mLayoutInflater; | |
private List<User> mUsers; | |
private OnUserClickListener mOnUserClickListener; | |
public UsersAdapter(Context context, List<User> data, OnUserClickListener onUserClickListener) { | |
mContext = context; | |
mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); | |
mUsers = data; | |
mOnUserClickListener = onUserClickListener; | |
} | |
@Override | |
public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | |
View view = mLayoutInflater.inflate(000, null); | |
return new UserViewHolder(view, mOnUserClickListener, this); | |
} | |
@Override | |
public void onBindViewHolder(UserViewHolder holder, int position) { | |
holder.bind(mUsers.get(position)); | |
} | |
@Override | |
public boolean onFailedToRecycleView(UserViewHolder holder) { | |
return true; | |
} | |
@Override | |
public int getItemCount() { | |
return mUsers.size(); | |
} | |
@Nullable | |
@Override | |
public User provideUser(int position) { | |
return mUsers.get(position); | |
} | |
interface OnUserClickListener { | |
void onUserClicked(User user); | |
void onLikeClicked(User user); | |
void onReplyClicked(User user); | |
// etc... | |
} | |
static final class UserViewHolder extends RecyclerView.ViewHolder { | |
private Button mButtonLike; | |
private Button mButtonReply; | |
public UserViewHolder(View itemView, final OnUserClickListener onUserClickListener, final UserProvider userProvider) { | |
super(itemView); | |
itemView.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
onUserClickListener.onUserClicked(userProvider.provideUser(getAdapterPosition())); | |
} | |
}); | |
mButtonLike.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
onUserClickListener.onLikeClicked(userProvider.provideUser(getAdapterPosition())); | |
} | |
}); | |
mButtonReply.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
onUserClickListener.onReplyClicked(userProvider.provideUser(getAdapterPosition())); | |
} | |
}); | |
} | |
private void bind(User user) { | |
// bind logic | |
} | |
} | |
} | |
interface UserProvider { | |
@Nullable | |
User provideUser(int position); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment