Java 无法在片段内更新RecyclerView

Java 无法在片段内更新RecyclerView,java,android-fragments,android-recyclerview,android-viewpager,Java,Android Fragments,Android Recyclerview,Android Viewpager,我有一个活动,它使用一个ViewPager来包含2个片段。在其中一个碎片里我有一个回收视图。直到现在,当我第一次运行应用程序时,视图才正确显示。片段向web服务发出请求,并将数据加载到片段的recyclerview和all good中。现在我的问题是,我必须通过只传递一个整数来过滤从MainActivity加载到recycler视图中的数据,但是recyclerview没有更新 这是我的代码: 如何在MainActivity中设置我的viewPager: setSupportAc

我有一个活动,它使用一个ViewPager来包含2个片段。在其中一个碎片里我有一个回收视图。直到现在,当我第一次运行应用程序时,视图才正确显示。片段向web服务发出请求,并将数据加载到片段的recyclerview和all good中。现在我的问题是,我必须通过只传递一个整数来过滤从MainActivity加载到recycler视图中的数据,但是recyclerview没有更新

这是我的代码:

如何在MainActivity中设置我的viewPager:

        setSupportActionBar(toolbar);
        ViewPagerAdapter adapterpager = new ViewPagerAdapter(getSupportFragmentManager(),context);
        viewPager.setAdapter(adapterpager);
        tabLayout.setupWithViewPager(viewPager);
ViewPagerAdapter:

public class ViewPagerAdapter extends FragmentPagerAdapter {

    Context context;
    public ViewPagerAdapter(FragmentManager fm, Context context) {
        super(fm);
        this.context=context;
    }

    @Override
    public Fragment getItem(int position) {
        ActivitiesFragment activitiesFragment = new ActivitiesFragment(context);
        ArticlesFragment articlesFragment = new ArticlesFragment(context);
        Fragment fragment = new Fragment();

        if (position==0) {
            fragment = activitiesFragment;
        }else if (position==1){
            fragment = articlesFragment;
        }
        return fragment;
    }

    @Override
    public int getCount() {
        return 2;
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        position = position+1;
        String tabTittle="Activities";
        if (position==2){
            tabTittle = "Articles";
        }
        return tabTittle;
    }
}
我的活动片段:

public class ActivitiesFragment extends Fragment implements ActivitiesResponse {

    private RecyclerView activityRecycler;
    private RequestMethods req;
    private String skillId="1";
    private String babyId="50";
    Context context;
    private ActivitiesRecyclerAdapter activitiesRecyclerAdapter;

    public ActivitiesFragment(Context context) {
        // Required empty public constructor
        this.context=context;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_activities, container, false);
        activityRecycler = v.findViewById(R.id.activities_recycler);

        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
        linearLayoutManager.setOrientation(RecyclerView.VERTICAL);
        activityRecycler.setLayoutManager(linearLayoutManager);

        req = new RequestMethods(context);
        req.getActivities(skillId,babyId,0);
        req.onActivityResponse(this);
        return v;
    }

    @Override
    public void getActivities(List<Activity> list, int age) {

        List<Activity> activityList = new ArrayList<>();
        int listPos=0;
        if (age==0){
            activityList = list;
        }else{
        for (int x =0;x<list.size();x++){
            if (list.get(x).getAge()==age){
                activityList.add(listPos,list.get(x));
                listPos++;
            }
        }
        }
        activitiesRecyclerAdapter = new ActivitiesRecyclerAdapter(activityList, context, new OnItemActivityClickListener() {
            @Override
            public void onItemClick(List<Activity> list, int position) {
                Log.e("response_data","Click "+list.get(position).getName());
            }
        });

        activityRecycler.setAdapter(activitiesRecyclerAdapter);
    }
    public void requestActivities(int age){
        RequestMethods request = new RequestMethods(context);
        request.onActivityResponse(this);
        request.getActivities(skillId,babyId,age);
    }
}
公共类ActivitiesFragment扩展片段实现ActivitiesResponse{
私人回收站查看活动回收站;
私有请求方法请求;
私有字符串skillId=“1”;
私有字符串babyId=“50”;
语境;
私人活动RecyclerAdapter活动RecyclerAdapter;
公共活动片段(上下文){
//必需的空公共构造函数
this.context=context;
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(R.layout.fragment_活动,容器,错误);
activityRecycler=v.findViewById(R.id.activities\u recycler);
LinearLayoutManager LinearLayoutManager=新的LinearLayoutManager(上下文);
linearLayoutManager.setOrientation(RecyclerView.VERTICAL);
activityRecycler.setLayoutManager(linearLayoutManager);
req=新的请求方法(上下文);
要求获得活动(skillId,babyId,0);
请求onActivityResponse(本);
返回v;
}
@凌驾
公共活动(列表,整数){
List activityList=新建ArrayList();
int-listPos=0;
如果(年龄==0){
activityList=列表;
}否则{

对于(int x=0;xy),您应该在进行update@LiNKeR我应该在哪里做呢?在新数据被提供给recylerview之后(可能是在您更新任何在其类中保存数据的hashmap、数组或列表的时候)。您应该使用post runnable来做这件事(因此,当recyclerview的UI处于空闲状态时,数据会被输入,即,
recylerview.post(新运行…
),然后在
recyclerview.notifyDataSetChanged()内考虑使用