如何从单击功能的适配器内部交换片段?

时间:2019-06-05 04:03:41

标签: android android-fragments android-adapter

所以我有一个活动-“ MainWindow”。

里面是三个片段。 片段之一是“ HomeFragment”

在HomeFragment内有一个使用适配器“ AvailableRequestsAdapter”的recyclerview

在AvailableRequestsAdapter内有一个按钮,当按下该按钮时,我希望将“ HomeFragment”换成“ SelectBuyerFragment”,并且我希望适配器也将字符串“ service_id”传递给“ SelectBuyerFragment”。

我该怎么做?

我知道我可以使用片段管理器交换片段,但是我该如何在适配器中进行操作呢?

在我的适配器内部:

public class AvailableRequestsHolder extends  RecyclerView.ViewHolder {
        ImageView serviceIcon;
        TextView serviceTitle;
        public AvailableRequestsHolder (final View itemView){
            super(itemView);
            serviceIcon = itemView.findViewById(R.id.service_icon);
            serviceTitle = itemView.findViewById(R.id.service_title);
            serviceIcon.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                //Swap HomeFragment for SelectBuyerFragment here
                //Also pass "service_id" string to the new fragment.
                }
            });
        }
    }

1 个答案:

答案 0 :(得分:0)

HomeFragement中定义一个接口(例如:onSelectBuyerClicked),并在包含HomeFragement的活动中实现该接口: 该实现应换出HomeFragment并将service_id传递给SelectBuyerFragment

在AvailableRequestsAdapter中,您可以在调用之前检查活动上下文是否实现了接口