Почему мои фрагменты не обновляются при изменении данных при поиске? - PullRequest
0 голосов
/ 12 января 2019

Представление обновляется только один раз и показывает новые карты, я не знаю почему, и когда я переключаюсь на Tab3 (карта Google).

После перехода к tab3 (карта Google) и снова к tab1 (только обновление Tab1, но без tab2, tab2 показывает то же самое на tab1 при запуске, но без обновления] [3]

Проблема в том, как обновить в реальном времени или что происходит с моим кодом?

Некоторый Java-код MainActivity

private void filtrar() {
    List<Locales> data = AllLocales;
    List<Locales> output = new ArrayList<>();
    for (Locales item : data) {
        if (item.getNombre().toLowerCase().startsWith(getQuer().toLowerCase())) {
            output.add(item);
        } else {
            if (item.getRubro().toLowerCase().startsWith(getQuer().toLowerCase())) {
                output.add(item);
            }
        }
    }
    AllLocales = output;
}

public static class MapFragment extends Fragment implements OnMapReadyCallback{
    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    private static final String ARG_SECTION_NUMBER = "section_number";

    public MapFragment() {
    }

    /**
     * Returns a new instance of this fragment for the given section
     * number.
     */
    public static MapFragment newInstance(int sectionNumber) {
        MapFragment fragment = new MapFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_maps, null, false);
        SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
        return view;
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {

    }
}

public static class LocalesFragment extends Fragment {

    private static final String ARG_SECTION_NUMBER = "section_number";

    public LocalesFragment() {
    }

    public static LocalesFragment newInstance(int sectionNumber) {
        LocalesFragment fragment = new LocalesFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.tab1, container, false);

        RecyclerView rv = rootView.findViewById(R.id.rv_recycler_view);
        rv.setHasFixedSize(true);
        Adaptador adapter = new Adaptador(AllLocales);
        rv.setAdapter(adapter);

        LinearLayoutManager llm = new LinearLayoutManager(getActivity());
        rv.setLayoutManager(llm);

        return rootView;
    }

}
public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        if (position==2) {return  MapFragment.newInstance(position+1);}else{
            return LocalesFragment.newInstance(position + 1);}
    }

    @Override
    public int getCount() {
        // Show 3 total pages.
        return 3;
    }
}

Adaptador.java

public class Adaptador extends RecyclerView.Adapter<RecyclerView.ViewHolder>{

    private List<Locales> data;
    int total_types;

    class ViewHolder0 extends RecyclerView.ViewHolder {
        //Some code
        }
    }

    class ViewHolder1 extends RecyclerView.ViewHolder {
        //Some code
        }
    }

    class ViewHolder2 extends RecyclerView.ViewHolder {
        //Some code
        }
    }

    @Override
    public int getItemViewType(int position) {
        switch (parseInt(data.get(position).getNivelMiembro())) {
            case 0:
                return parseInt(data.get(position).getNivelMiembro());
            case 1:
                return parseInt(data.get(position).getNivelMiembro());
            case 2:
                return parseInt(data.get(position).getNivelMiembro());
            default:
                return -1;
        }
    }
    public Adaptador(List<Locales> data) {
        this.data = data;
        total_types = data.size();
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    //Some code
    }

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder,final int position) {
       //Some code
    }

    @Override
    public int getItemCount() {
        return data.size();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...