Правильно ли устанавливать прослушиватели ClickableSpan внутри onBindViewHolder RecyclerView? Для viewHolder я хотел бы реализовать View.OnClickListener внутри viewHolder
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
@Override
public ViewHolder(@NonNull View itemView) {
super(itemView);
//set viewHolders
}
@Override
public void onClick(View view) {
//Set on click listener
}
}
Однако ClickableSpan - это класс. Но я не уверен, что воссоздание нового кликабельного диапазона каждый раз в onBindViewHolder является правильным способом сделать это.
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
//holder.viewHolderUsername.setText(list.get(position).getPosted_by_user());
holder.viewHolderMessage.setText(list.get(position).getMessage());
SpannableString ss = new SpannableString(list.get(position).getPosted_by_user());
String word = list.get(holder.getAdapterPosition()).getPosted_by_user();
final int startingPosition = word.indexOf(word);
final int endingPosition = startingPosition + word.length();
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View view) {
Toast.makeText(mContext, list.get(holder.getAdapterPosition()).getMessage(), Toast.LENGTH_SHORT).show();
}
};
ss.setSpan(clickableSpan, startingPosition, endingPosition, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
holder.viewHolderUsername.setText(ss);
holder.viewHolderUsername.setMovementMethod(LinkMovementMethod.getInstance());
}