我想在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);
}
}
此外,它不显示第一个和最后一个位置。 提前谢谢。