我正在开发的聊天应用程序中尝试实现“Pin Message”功能。聊天活动如下所示:
我在聊天RecyclerView上面有一个TextView,并希望将其文本设置为RecyclerView中的TextView值。我可以通过使用PopupMenu(在其适配器类中)来获取RecyclerView中的字符串值,目前将其显示在吐司中。我应该如何实现这一点?谢谢!另外,我还在使用Java。
yvt65v4c1#
首先创建一个名为PinMessageListener的接口
public interface PinMessageListener { void onPin(String value); }
其次,在您Activity或片段中实现该接口
public class YourActivityOrFragment extends AppCompatActivity implement PinMessageListener { ... ... ... @Override public void onPin(String value) { yourTextView.setText(value); } ... }
第三,在回收程序适配器中传递此接口
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... //this refers to PinMessageManager YourRecyclerViewAdapter adapter = new YourRecyclerViewAdapter(this); ... }
回收程序适配器必须如下所示:
public YourRecyclerViewAdapter extends RecyclerView.Adapter<YourViewHolder> { private final PinMessageListener pinMessageListener; public YourRecyclerViewAdapter(PinMessageListener pinMessageListener) { this.pinMessageListener = pinMessageListener; } onCreateViewHolder(...) { return new YourViewHolder(pinMessageListener); }
且您viewHolderClass必须如下所示:
public YourViewHolder extends RecyclerView.ViewHolder { private final PinMessageListener pinMessageListener; public YourViewHolder(View rootView) { super(rootView); this.pinMessageListener = pinMessageListener; } public void bind(ModelClass model) { yourTextView.onClickListener((view) -> pinMessageListener.onPin(yourTextView.getText().toString()); }
就是这样
cyvaqqii2#
我终于找到了这个问题的解决方案。链接到SO帖子这里-〉LINK
2条答案
按热度按时间yvt65v4c1#
首先创建一个名为PinMessageListener的接口
其次,在您Activity或片段中实现该接口
第三,在回收程序适配器中传递此接口
回收程序适配器必须如下所示:
且您viewHolderClass必须如下所示:
就是这样
cyvaqqii2#
我终于找到了这个问题的解决方案。链接到SO帖子这里-〉LINK