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

时间:2021-06-25 07:57:51

标签: java android firebase android-intent

我想将适配器类中的音频文件发送到片段中,该片段是从 Firebase 数据库中检索到的片段。

这是我的 Adapter 类代码。

recyclerViewAdapter.java

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 个答案:

答案 0 :(得分:1)

要在 adapter 类到 fragment 之间发送数据,请使用 interface

在适配器类中创建接口

    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) {

          //data received...

        }
    });

详细解答

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

        }

    }
}

相关问题