Не удается обновить RecyclerView внутри фрагмента - PullRequest
0 голосов
/ 12 ноября 2019

У меня есть действие, которое использует ViewPager, чтобы содержать 2 фрагмента. Внутри одного из фрагментов у меня есть recyclerView. До сих пор, когда я впервые запускаю приложение, представление отображается правильно. Фрагмент делает запрос в веб-сервис и загружает данные в просмотрщик фрагмента и все хорошо. Теперь моя проблема заключается в том, что я должен отфильтровать данные, загруженные в представление переработчика, из MainActivity, просто передав целое число, но представление переработчика не обновляется.

Это мой код:

как яустановить мой viewPager в MainActivity:

        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;
    }
}

Мой ActivityFragment:

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);
    }
}

Я попытался обновить свой Recyclerview с помощью метода Override getActivities(List<Activity> list, int age){} но ничего не получалось до сих пор. Я застрял на несколько часов, пожалуйста, помогите!

...