android - for - पहली टैब से दृश्य टैब में दूसरे टैब में रीसाइक्लिव्यू को अपडेट कैसे करें?



update google chrome latest version (2)

वर्तमान में मेरे द्वारा सामना की जा रही समस्याओं में से एक यह है कि यदि कोई उपयोगकर्ता अपने समय सारिणी के लिए कुछ जोड़ता है, तो उसे दूसरे टैब में recyclerview में रीफ्रेश किया जाना चाहिए Current Timetable हालांकि, यह कभी भी अद्यतन नहीं होता है और उपयोगकर्ता को मुख्य मेनू पर वापस जाना है, वापस Timetables गतिविधि पर और फिर Current Timetable चयन करें। मेरा मानना ​​है कि यह मेरे ViewPager और इसके अडैप्टर के साथ कुछ है। मुझे नहीं पता है कि मैं कहाँ जा रहा हूं और मुझे यकीन है कि यह कुछ आसान है कि मैं याद कर रहा हूं। कृपया क्या आप अपना कोड संशोधित कर सकते हैं जैसे कि यह काम करेगा

यहां मेरा कोड है: व्यूपैजर वर्ग

public class Timetables extends AppCompatActivity{
    TabLayout tabLayout;
    ViewPager viewPager;
    Context context;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.timetables);
        viewPager = (ViewPager) findViewById(R.id.viewPager);
        TimetablesAdapter timetablesAdapter = new TimetablesAdapter(getSupportFragmentManager(), Timetables.this);
        viewPager.setAdapter(timetablesAdapter);
        viewPager.setOffscreenPageLimit(2);
        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                //viewPager.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                //viewPager.setCurrentItem(tab.getPosition());
            }
        });
    }
}

फ्रेग्जपेगर एडाप्टर क्लास:

public class TimestableAdapter extends FragmentPagerAdapter{

    String tabNames[] = new String[] {"All timetables", "Current Timetable", "Expired"};
    Context context;

    public TimestableAdapter(FragmentManager fragmentManager, Context context){
        super(fragmentManager);
        this.context = context;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0:
                return new AllTimetables();
            case 1:
                return new CurrentTimetables();
            case 2:
                return new ExpiredTimetables();
            default:
                return null;
        }
    }

    @Override
    public int getCount() {
        return tabNames.length;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return tabNames[position];
    }
}

यह CurrentTimetable वर्ग है:

public class CurrentTimetables extends Fragment {
    RecyclerView recyclerView;
    static MusicRecyclerAdapter adapter;
    RecyclerView.LayoutManager layoutManager;
    ArrayList<Timetables> list;

    public CurrentTimetables(){

    }

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.currenttimetable, container, false);
        recyclerView = (RecyclerView) rootView.findViewById(R.id.timetablerecyclerView);
        recyclerView.setHasFixedSize(true);
        list = new ArrayList<Timetables>();
        adapter = new MusicRecyclerAdapter(list, CurrentTimetables.this);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity().getApplicationContext());
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(adapter);
        tabBackground = new TabBackground(CurrentTimetables.this, list, spinnerItems, adapter, spinnerAdapter);
        tabBackground.populateConditionsList();
        inputs = new ArrayList<>();
        populate();
        return rootView;
    }

    @Override
    public void onResume() {
        super.onResume();
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {

    }

    @Override
    public void onStart() {
        super.onStart();
    }

    public void populate(){
        String dbURL = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        RequestQueue requestQueue = Volley.newRequestQueue(fragment.getActivity());
        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest
                (dbURL, new Response.Listener<JSONArray>(){

                    @Override
                    public void onResponse(JSONArray jsonArray) {
                        if(!list.isEmpty()){
                            list.clear();
                        }
                        try {
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject jsonObject = jsonArray.getJSONObject(i);

                                int timetableID = Integer.parseInt(jsonObject.getString("timetableID"));
                                String timetableName = jsonObject.getString("timetableName");
                                String subjectName = jsonObject.getString("subjectName");

                                Timetables timetables = new Timetables(timetableID, timetableName, subjectName);
                                list.add(timetables);
                                adapter.notifyDataSetChanged();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener(){

                    @Override
                    public void onErrorResponse(VolleyError volleyError) {

                    }
                }
                );
        requestQueue.add(jsonArrayRequest);
    }
 }

क्या वास्तव में बहुत से लोग मुझे मेरी मदद कर सकते हैं?

धन्यवाद

https://ffff65535.com


आपके कोड में कुछ आवश्यक बदलाव हैं अगर आप फ्रेगमेंट के लाइफसाइकल की जांच करते हैं तो आप समझेंगे कि यह टैबिलर व्यू के साथ कैसे काम करता है।

कोड को ऊपर कोड से बना दिया है।

public class CurrentTimetables extends Fragment {
    RecyclerView recyclerView;
    static MusicRecyclerAdapter adapter;
    RecyclerView.LayoutManager layoutManager;
    ArrayList<Timetables> list;
    Context context;

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        this.context = context;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.currenttimetable, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        recyclerView = (RecyclerView) view.findViewById(R.id.timetablerecyclerView);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(context));
        tabBackground = new TabBackground(CurrentTimetables.this, list, spinnerItems, adapter, spinnerAdapter);
        tabBackground.populateConditionsList();
        // If you have another Component add here using finViewById() and also you can do
        // other process here. I just used setUserVisibleHint because it will execute when
        // fragment will be visible to user and it will stop over calling to web service.
        /**
         * Populate Recyclerview data if setUserVisibleHint do not work.
         */
    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
            populate();
        }
    }

    public void populate() {
        String dbURL = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        RequestQueue requestQueue = Volley.newRequestQueue(context);
        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(dbURL, new Response.Listener<JSONArray>() {

            @Override
            public void onResponse(JSONArray jsonArray) {
                if (!list.isEmpty()) {
                    list.clear();
                }
                try {
                    list = new ArrayList<Timetables>();
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject jsonObject = jsonArray.getJSONObject(i);

                        int timetableID = Integer.parseInt(jsonObject.getString("timetableID"));
                        String timetableName = jsonObject.getString("timetableName");
                        String subjectName = jsonObject.getString("subjectName");

                        Timetables timetables = new Timetables(timetableID, timetableName, subjectName);
                        list.add(timetables);
                        adapter = new MusicRecyclerAdapter(list, context);
                        recyclerView.setAdapter(adapter);
                        adapter.notifyDataSetChanged();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError volleyError) {

            }
        });
        jsonArrayRequest.setRetryPolicy(new DefaultRetryPolicy(5 * 1000, 1, 1.0F));
        jsonArrayRequest.setShouldCache(false);
        requestQueue.add(jsonArrayRequest);
    }

    @Override
    public void onResume() {
        super.onResume();
        populate();
    }
}

हो सकता है मैं आपके कोड से कुछ भूल गया हो और आपको इसे जोड़ना पड़ सकता है


आपको मुख्य सक्रियता में एक इंटरफ़ेस बनाना होगा। इसे अपने टुकड़ों में संदर्भ दें यह एक टुकड़ा से दूसरे तक संवाद करने का सबसे अच्छा तरीका है कृपया नीचे दी गई लिंक देखें

http://developer.android.com/training/basics/fragments/communicating.html

एक नज़र डालें और अगर किसी भी संदेह में मदद करने के लिए यहां हूँ





fragmentpageradapter