使用可滑动的tablayout更改单个片段中的数据

时间:2016-02-22 11:14:36

标签: java android json android-viewpager

我想在ViewPager中滑动Fragment时更改数据。

Tabview的数据来自JSON。它给出了id,根据该id,将检索数据。 但是当加载mainActivity时,它会同时给出前两个位置。

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

这是我的ViewPager Adapter课程。

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

此外,它不显示第一个和最后一个位置。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

使用 FragmentStatePagerAdapter

点击此链接,您可能会得到答案:click here