Java 使用swipeable TableLayout更改单个片段中的数据
当我在Java 使用swipeable TableLayout更改单个片段中的数据,java,android,json,android-viewpager,Java,Android,Json,Android Viewpager,当我在片段中滑动ViewPager时,我想更改数据 Tabview的数据来自JSON。它给出id,并根据该id检索数据。 但当加载mainActivity时,它会同时给出前两个位置 ActivityMain.java ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); StrictMode.ThreadPolicy policy = new StrictMode
片段
中滑动ViewPager
时,我想更改数据
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);
}
它也不显示第一个和最后一个位置。
提前感谢。使用FragmentStatePagerAdapter
检查此链接,您可能会得到答案:使用FragmentStatePagerAdapter
检查此链接,您可能会得到以下答案:我认为您应该将该行移到
fragment.setArguments
:mffragmentlist.add(fragment)下;还要注意,HttpClient现在是一个不推荐使用的类,我猜您的目标是较旧的API。考虑使用HTTURL连接。谢谢,但是我尝试的问题仍然是相同的……的第一个和最后一个位置是什么?问题有点不清楚。有什么错误吗?您下载数据的代码是OnCreate方法吗?考虑使用下载本身的另一种方法,例如下载内容,将HTTP请求放在那里,然后在OnCube中使用“下载内容”()。寻呼机适配器似乎很好,那么响应是否为空?我还想对我之前的评论进行扩展,我建议您也研究一个使JSON任务更简单的库,比如Volley或GSON。说真的,它们很好,而且比我相信的更容易理解。当我滑动选项卡时,如果它位于第一个或最后一个位置,它不会显示其id。我认为您应该将该行移动到fragment.setArguments
:mffragmentList.add(fragment);还要注意,HttpClient现在是一个不推荐使用的类,我猜您的目标是较旧的API。考虑使用HTTURL连接。谢谢,但是我尝试的问题仍然是相同的……的第一个和最后一个位置是什么?问题有点不清楚。有什么错误吗?您下载数据的代码是OnCreate方法吗?考虑使用下载本身的另一种方法,例如下载内容,将HTTP请求放在那里,然后在OnCube中使用“下载内容”()。寻呼机适配器似乎很好,那么响应是否为空?我还想对我之前的评论进行扩展,我建议您也研究一个使JSON任务更简单的库,比如Volley或GSON。说真的,它们很好,而且比我相信的更容易理解。当我刷标签时,如果它在第一个或最后一个位置,它不会显示它的id。
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);
}
}