当前位置: 首页 > 知识库问答 >
问题:

如何将数据从适配器类发送到片段?

汪丁雷
2023-03-14
public class recyclerViewAdapter extends FirebaseRecyclerAdapter<model, recyclerViewAdapter.recyclerViewHolder> {

public recyclerViewAdapter(@NonNull FirebaseRecyclerOptions<model> options) {
    super(options);
}

@Override
protected void onBindViewHolder(@NonNull recyclerViewAdapter.recyclerViewHolder holder, int position, @NonNull model model) {

    holder.recycler_view_title.setText(model.getTitle());
    Glide.with(holder.recycler_view_image.getContext()).load(model.getImageUrl()).into(holder.recycler_view_image);

    holder.recycler_view_image.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            AppCompatActivity appCompatActivity = (AppCompatActivity) v.getContext();
            appCompatActivity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new DescriptionFragment(model.getTitle(), model.getDescription(), model.getImageUrl(), model.getAudioUrl())).addToBackStack(null).commit();

        }
    });

}

@NonNull
@Override
public recyclerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_row_design, parent, false);

    return new recyclerViewHolder(view);
}

public class recyclerViewHolder extends RecyclerView.ViewHolder {

    private ImageView recycler_view_image;
    private TextView recycler_view_title;

    public recyclerViewHolder(@NonNull View itemView) {
        super(itemView);

        recycler_view_image = itemView.findViewById(R.id.recycler_view_image);
        recycler_view_title = itemView.findViewById(R.id.recycler_view_title);

    }

}

}

共有1个答案

锺离高丽
2023-03-14

要在适配器类到片段之间发送数据,请使用接口

在适配器类内创建接口

    OnDataSend dataSend;

    public interface OnDataSend {
        void onSend(String audioURL);
    }

    public void OnDataSend(OnDataSend dataSend){
        this.dataSend = dataSend;
    }
   

要发送数据,请将其放在适配器类中

    //To send data call 
    dataSend.onSend(/*Pass you data*/);
    recyclerViewAdapter recyclerViewAdapter = new recyclerViewAdapter();
    recyclerViewAdapter.OnDataSend(new recyclerViewAdapter.OnDataSend() {
        @Override
        public void onSend(String audioURL) {

        }
    });

public class recyclerViewAdapter extends FirebaseRecyclerAdapter<model, recyclerViewAdapter.recyclerViewHolder> {

    OnDataSend dataSend;

    public recyclerViewAdapter(@NonNull FirebaseRecyclerOptions<model> options) {
        super(options);
    }

    public void OnDataSend(OnDataSend dataSend) {
        this.dataSend = dataSend;
    }

    @Override
    protected void onBindViewHolder(@NonNull recyclerViewAdapter.recyclerViewHolder holder, int position, @NonNull model model) {

        holder.recycler_view_title.setText(model.getTitle());
        Glide.with(holder.recycler_view_image.getContext()).load(model.getImageUrl()).into(holder.recycler_view_image);

        holder.recycler_view_image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                AppCompatActivity appCompatActivity = (AppCompatActivity) v.getContext();
                appCompatActivity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new DescriptionFragment(model.getTitle(), model.getDescription(), model.getImageUrl(), model.getAudioUrl())).addToBackStack(null).commit();

                
                //send data
                dataSend.onSend(model.getAudioUrl());
                
                
            }
        });

    }

    @NonNull
    @Override
    public recyclerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_row_design, parent, false);

        return new recyclerViewHolder(view);
    }

    public interface OnDataSend {
        void onSend(String audioURL);
    }

    public class recyclerViewHolder extends RecyclerView.ViewHolder {

        private ImageView recycler_view_image;
        private TextView recycler_view_title;

        public recyclerViewHolder(@NonNull View itemView) {
            super(itemView);

            recycler_view_image = itemView.findViewById(R.id.recycler_view_image);
            recycler_view_title = itemView.findViewById(R.id.recycler_view_title);

        }

    }
}

 类似资料:
  • 在适配器中 Holder.NameExam2.SetOnClickListener(新建View.OnClickListener(){ 成碎片 @覆盖公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){ 它在getString()中调用空指针异常。如何解决。

  • 我有一个包含EditText的片段,当我单击该EditText时,会出现一个DatePicker对话框来选择日期。 FragmentFile 对话框片段 问题是我不知道如何将数据(选定日期)从DialogFraank传递到片段? 我读了一些主题,但这并没有帮助我感到困惑(抱歉再次提出这个问题)。 主题1主题2

  • 我想在片段的活动中使用一些文本视图(cityField,updatedField)。我知道在活动中使用它们会更容易,但问题是,由于要获取一些JSON数据,我不得不在Fragment上加入一些代码 我已经得到了活动代码的ID 现在我想在我的片段中使用它们 所以问题是 - 这可能吗?如果可能,如何? 我已经检查了这个网站上的一些答案 - 在Android中将数据从活动发送到片段 如何使用捆绑包将数据从

  • 我需要将数据从片段发送到另一个活动 我在Homeactive下的LoadsFraank中使用此代码 在另一个活动(LoadActivity)中接收数据 但是意图没有附加条件 请看下面的截图

  • 问题内容: 我是Rails和Web开发的新手。 我正在Matlab中生成一堆对象,我想将这些对象发送到我的Rails应用程序中的数据库中。谁能建议我该怎么做? 到目前为止,在Rails端,我已经为数据生成了基本的支架。我可以使用“ / myobjects / new”中的表单将对象添加到数据库中。 在Matlab端,我一直在尝试使用HTTP POST请求添加对象,如下所示: 这将失败,并将以下内容