Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用swipeable TableLayout更改单个片段中的数据_Java_Android_Json_Android Viewpager - Fatal编程技术网

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