android 如何使用RecyclerView中选定的文本设置TextView的文本?

r7xajy2e  于 2022-11-27  发布在  Android
关注(0)|答案(2)|浏览(179)

我正在开发的聊天应用程序中尝试实现“Pin Message”功能。
聊天活动如下所示:

我在聊天RecyclerView上面有一个TextView,并希望将其文本设置为RecyclerView中的TextView值。我可以通过使用PopupMenu(在其适配器类中)来获取RecyclerView中的字符串值,目前将其显示在吐司中。
我应该如何实现这一点?谢谢!
另外,我还在使用Java。

yvt65v4c

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());
}

就是这样

cyvaqqii

cyvaqqii2#

我终于找到了这个问题的解决方案。链接到SO帖子这里-〉LINK

相关问题