如何将数据从Recyclerview适配器传递或发送到片段 [英] How to pass or send data from recyclerview adapter to fragment

查看:78
本文介绍了如何将数据从Recyclerview适配器传递或发送到片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将数据从recyclerview适配器传递到片段,以及我必须在片段中编写代码以接收数据.我已经检查了本网站中的链接,但不幸的是无法获取正确的代码.下面是代码

How to pass data from recyclerview adapter to fragment and what i have to write the code in fragment to receive data.I have already check the links in this website but unfortunately unable to get correct code. Below is the code

ExampleAdapter.Java

ExampleAdapter.Java

public class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder> {
    private ArrayList<ExampleItem> mExampleList;
    @NonNull
    @Override
    public ExampleViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.example_item,viewGroup,false);
        ExampleViewHolder evh=new ExampleViewHolder(v);
        return evh;
    }
    @Override
    public void onBindViewHolder(@NonNull ExampleViewHolder exampleViewHolder, int i) {
        final ExampleItem currentItem=mExampleList.get(i);
        exampleViewHolder.mTextView.setText(currentItem.getmText());
        exampleViewHolder.mTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // pass the data to the fragment
            }
        });
    }
    @Override
    public int getItemCount() {
        return mExampleList.size();
    }
    public static class ExampleViewHolder extends RecyclerView.ViewHolder {
        public TextView mTextView;
        public ExampleViewHolder(@NonNull View itemView) {
            super(itemView);
            mTextView=itemView.findViewById(R.id.texttitle);
        }
    }
    public ExampleAdapter(ArrayList<ExampleItem> exampleList){
              this.mExampleList=exampleList;
}
}

推荐答案

您可以通过在适配器中附加回调来传递数据:

You can pass data by attaching a callback into your adapter:

创建界面:

interface OnTextClickListener {
    void onTextClick(ExampleItem data);
}

代理回调:

class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder> {

    List<ExampleItem> items;
    OnTextClickListener listener;

    ExampleAdapter(List<ExampleItem> items, OnTextClickListener listener) {
        this.items = items;
        this.listener = listener;
    }

    @Override
    public void onBindViewHolder(ExampleViewHolder viewHolder, int position) {
        viewHolder.textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Say you want to pass an ExampleItem back to the fragment...
                ExampleItem data = items.get(position);
                listener.onTextClick(data);
            }
        });
    }
}

使用界面实现片段:

class YourFragment extends Fragment implements OnTextClickListener {

    public onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        recyclerView.setAdapter(new ExampleAdapter(this));
    }

    void onTextClick(ExampleItem data) {
        // Now you can do however you want with the data here...
        Toast.makeText(getActivity(), "Got: " + data, Toast.LENGTH_SHORT).show()
    }
}

这篇关于如何将数据从Recyclerview适配器传递或发送到片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆