Android在Recyclerview Adapter中使用getSupportFragmentManager

时间:2019-01-04 16:24:08

标签: android android-recyclerview

如果用户单击Fragment项目,则需要转到下一个Recyclerview。为此,我在Adapter中尝试了以下操作:

   viewHolder.getModel().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                seller fragment3 = new seller();
                FragmentTransaction fragmentTransaction3 = mActivity.getSupportFragmentManager().beginTransaction();
                fragmentTransaction3.replace(R.id.fram, fragment3, "FragmentThree");  //create first framelayout with id fram in the activity where fragments will be displayed
                fragmentTransaction3.commit();
            }
        });

现在的问题是它无法解决getSupportFragmentManager我必须更改什么?

1 个答案:

答案 0 :(得分:1)

我试图解释如何通过界面解决您的问题。在您的适配器中,创建一个接口。

public interface ItemClickListener {
    void onItemClicked(int itemId);
}

然后,在适配器类中初始化接口并将其添加到cronstructor中。

private ItemClickListener mListener;

public Adapter(ItemClickListener listener) {
    this.mListener = listener;
}

在方法中,您必须调用接口方法并传递ID。

viewHolder.getModel().setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            listener.onItemClicked(getItemId);
        }
    });

最后,您需要在recyclerview的活动或片段中实现接口,您可以在其中访问fragmentmanager并将其传递给适配器的构造函数。

public class ExampleActivity extends  AppCompatActivity implement Adapter.ItemClickListener{

   Adapter adapter = new Adapter(this);

   //...

   @Override
   public void onItemClicked(int itemId) {
   // start fragment with the itemId 
   }
}