【问题标题】:RecyclerView item click clicks TextView inside itemRecyclerView 项目单击单击项目内的 TextView
【发布时间】:2019-12-01 23:35:01
【问题描述】:

我的 RecyclerView 项目中有一个 TextView,我使用 Adapter 中的以下代码使 TextView 中的链接可点击:

public void bindNote(Note note) {
    str = note.getNoteText();
    strHTML = str.replaceAll("\n","<br>");
    noteTextView.setText(Html.fromHtml(strHTML));
    noteTextView.setMovementMethod(LinkMovementMethod.getInstance()); 
} 

问题是在这样做之后,现在单击该项目无法正常工作,并且如果我在 TextView 外部单击,它只会单击该项目。如果我单击文本,则不会发生任何事情。

问题是因为我使链接可点击的方式吗?或者我没有正确处理点击?

这是 ViewHolder 的一部分:

public class NoteViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,
        View.OnLongClickListener, PopupMenu.OnMenuItemClickListener {
    TextView noteTextView;
    TextView dateTextView;

    public NoteViewHolder(@NonNull View itemView) {
        super(itemView);
        noteTextView = itemView.findViewById(R.id.tv_itemNoteTele_noteText);
        dateTextView = itemView.findViewById(R.id.tv_itemNoteTele_date);

        itemView.setOnLongClickListener(this);
        itemView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        onClickListener.itemClick(v, getAdapterPosition());
    }
}

public interface AdapterClickListener {
    void itemClick(View itemView, int position);
}

【问题讨论】:

  • noteTextView ,dateTextView 需要点击的,设置一个clicklistener即可
  • @ManojPerumarath 如您所见,我确实为 itemView 设置了点击监听器。即使我单击文本,我也希望它单击该项目。但如果 TextView 中有链接,则应单击该链接。

标签: android android-recyclerview textview


【解决方案1】:

对我来说,您的项目的行为似乎正常且合乎逻辑。当您单击 textview 时,它会充当您配置的超链接。

如果您希望单击文本比该项目提供保存操作,我建议您为该项目的文本视图调用相同的View.OnClickListener

public class NoteViewHolder extends RecyclerView.ViewHolder implements 
View.OnClickListener, View.OnLongClickListener, PopupMenu.OnMenuItemClickListener {

TextView noteTextView;
TextView dateTextView;

public NoteViewHolder(@NonNull View itemView) {
    super(itemView);
    noteTextView = itemView.findViewById(R.id.tv_itemNoteTele_noteText);
    dateTextView = itemView.findViewById(R.id.tv_itemNoteTele_date);

    itemView.setOnLongClickListener(this);
    itemView.setOnClickListener(this);
    noteTextView.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    onClickListener.itemClick(v, getAdapterPosition());
  }
}

public interface AdapterClickListener {
void itemClick(View itemView, int position);
}

【讨论】:

  • 但我不希望它表现得像这样。我只是希望链接是可点击的。不是整个 TextView。如果我为 TextView 设置 onClickListener,在它外部点击不会点击我的项目...
猜你喜欢
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 2021-12-28
  • 2017-06-09
  • 1970-01-01
相关资源
最近更新 更多