将Fragment One的RecyclerView项目位置传递给Fragment Two的另一个RecyclerView适配器

问题描述 投票:0回答:2

我在Recyclerview中设置了Fragment。我想将RecyclerView项目的位置从Fragment one的RecyclerView Adapter发送到Fragment Two的RecyclerView Adapter,在Fragment 2中设置RecyclerView的特定项目。 这是Fragment one Adapter的代码

@Override
    public void onBindViewHolder(final ViewHolder holder, int position) {
           final CurrentStatusEntry current=filterList.get(position);
          // holder.number.setText(current.getNo());
           holder.Name.setText(current.getName());
           holder.People.setText(current.getPeople());
           holder.Time.setText(current.getTime());
            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    int position=holder.getAdapterPosition();

                    AppCompatActivity activity=(AppCompatActivity)v.getContext();
                    activity.getSupportFragmentManager().beginTransaction().replace(R.id.frame,satusInfo).addToBackStack("info").commit();
                }
            });  

如何通过这个职位?

android android-recyclerview fragment
2个回答
0
投票

您可以使用Bundle进行此尝试,如下例所示:

在Fragment one setArguments

Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putInt(key, value);
fragment.setArguments(bundle);

在第二片片getArguments

Bundle bundle = this.getArguments();
if (bundle != null) {
    int myInt = bundle.getInt(key, defaultValue);
}

请参阅Android Doc.


0
投票

在片段1中,片段后实例片段为片段2

getFragmentManager().beginTransaction()
                                .replace(R.id.ftHolder, fragmentTwo.newInstance(getAdapterPosition()))
                                .addToBackStack("info")
                                .commit();

在片段2中添加此功能

public static fragmentTwo newInstance(int position) {
    fragmentTwo fragment = new fragmentTwo();
    Bundle bdl = new Bundle();
    bdl.putInt("position", position);
    fragment.setArguments(bdl);
    return fragment;
}

在onCreate()或onActivityCreated()中获取它并在任何地方使用它

position = getArguments().getInt("position");
© www.soinside.com 2019 - 2024. All rights reserved.