简体   繁体   中英

change the data in single fragment using the swipeable tablayout

I want to change data when I swipe a ViewPager in Fragment .

Data of Tabview comes from JSON . It gives id and according to that id, data will be retrieved. But when mainActivity is loaded it gives first two position simultaneously.

ActivityMain.java

    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
            String serverUrl = DataService.category;
            HttpClient client = new DefaultHttpClient();
            HttpPost post = new HttpPost(serverUrl);
            HttpResponse response = client.execute(post);
            HttpEntity entity = response.getEntity();
            String responseText = EntityUtils.toString(entity);
            System.out.println("the response text is " + responseText);
            response_text = new JSONObject(responseText);
            JSONArray jarray=response_text.getJSONArray("posts");
            for(int k=0;k<jarray.length();k++)
            {
                JSONObject jk=jarray.getJSONObject(k);
                adapter.addFragment(new TopNewsFragment(),jk.getString("categoryName"),jk.getString("c_id"));
                arraylist.add(jk.getString("c_id"));
            }
            fetchDate();
            viewPager.setAdapter(adapter);
}

Here is my ViewPager Adapter class.

public class ViewPagerAdapter extends FragmentPagerAdapter
{

    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }


    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }
    public void addFragment(Fragment fragment, String title,String category)
    {
        mFragmentList.add(fragment);
        Bundle b=new Bundle();
        b.putString("category_id",category);
        b.putString("title",title);
        fragment.setArguments(b);
        mFragmentTitleList.add(title);
    }
    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

Also it does not show first and last position. Thanks in advance.

Use FragmentStatePagerAdapter

Check this link you may got answer : click here

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM