Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.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
Android 在不同的选项卡片段上从API加载相同的数据_Android_Android Fragments - Fatal编程技术网

Android 在不同的选项卡片段上从API加载相同的数据

Android 在不同的选项卡片段上从API加载相同的数据,android,android-fragments,Android,Android Fragments,我在我的应用程序中有3个选项卡片段,每个片段表示来自同一API URL的不同数据(一次调用10条记录)。 这是我试图达到的最终结果: 选项卡1:显示来自我的API URL的记录1-5 选项卡2:显示来自我的API URL的记录6-10 选项卡3:显示与记录1-10不同的值 我的目标是在第一个选项卡(Tab1)中加载所有这些数据,并显示与每个选项卡中返回的JSON数据不同的结果,如上所述 到目前为止的进展情况:编码Tab1以显示记录1-10 需要您的帮助: 制作Tab1显示记录1-5,而不是全部1

我在我的应用程序中有3个选项卡片段,每个片段表示来自同一API URL的不同数据(一次调用10条记录)。 这是我试图达到的最终结果:

选项卡1:显示来自我的API URL的记录1-5

选项卡2:显示来自我的API URL的记录6-10

选项卡3:显示与记录1-10不同的值

我的目标是在第一个选项卡(Tab1)中加载所有这些数据,并显示与每个选项卡中返回的JSON数据不同的结果,如上所述

到目前为止的进展情况:编码Tab1以显示记录1-10

需要您的帮助:

  • 制作Tab1显示记录1-5,而不是全部10。由于我希望在同一次运行中加载所有10个结果,并且不会多次调用API,因此我不希望限制结果的数量
  • 代码Tab2显示在Tab1中接收到的JSON数据的记录6-10。意味着我需要从Tab2到Tab1进行通信
  • 希望得到这个方向,谢谢

    我一直在想什么:

    设置3静态JSONOAdapters,并将其与json结果一起设置,并将其用于每个选项卡。但是 静态JSON适配器是一个好的解决方案还是可能导致内存问题

    另一个问题:当我使用此选项时:

    public void updateData(JSONArray jsonArray) {
            // update the adapter's dataset
            mJsonArray = jsonArray;
            notifyDataSetChanged();
        }
    

    我得到结果1-10,我不知道如何将其限制为前5个或结果6-10。

    在活动或片段中加载从1到10的数据,该片段包含2个片段

    在此之后,为每个需要数据的片段添加函数setData

    最后,转到片段并加载之前设置的数据

  • 在活动中加载数据
  • 启动ViewPager适配器并发送构造函数中的项数组

    public class MyPagerAdapter extends FragmentPagerAdapter { 
    private static int NUM_ITEMS = 3;
    ArrayList<Item> arr; 
    
    
    public MyPagerAdapter(FragmentManager fragmentManager,ArrayList<Item> arr) { 
        super(fragmentManager); 
        this.arr=arr;   
    } 
    
    // Returns total number of pages 
    @Override 
    public int getCount() { 
        return NUM_ITEMS;
    } 
    
    // Returns the fragment to display for that page 
    @Override 
    public Fragment getItem(int position) {
        switch (position) {
        case 0: // Fragment # 0 - This will show FirstFragment 
            return FirstFragment.newInstance(arr.subList(0,5)); 
        case 1: // Fragment # 1 
            return FirstFragment.newInstance(arr.subList(6,10)); 
        case 2: // Fragment # 2
            //Change your values according to you need then pass the arr in Frag 3
            return SecondFragment.newInstance(arr); 
        default: 
            return null; 
        } 
    } 
    
    // Returns the page title for the top indicator 
    @Override 
    public CharSequence getPageTitle(int position) {
        return "Page " + position;
    } 
    
    } 
    
    公共类MyPagerAdapter扩展了FragmentPagerAdapter{
    私有静态int NUM_ITEMS=3;
    ArrayList-arr;
    公共MyPagerAdapter(碎片管理器碎片管理器,ArrayList arr){
    超级(碎片管理器);
    这个.arr=arr;
    } 
    //返回总页数
    @凌驾
    public int getCount(){
    返回NUM_项;
    } 
    //返回要为该页显示的片段
    @凌驾
    公共片段getItem(int位置){
    开关(位置){
    案例0://Fragment#0-这将显示FirstFragment
    返回FirstFragment.newInstance(arr.subList(0,5));
    案例1://Fragment#1
    返回FirstFragment.newInstance(arr.subList(6,10));
    案例2://Fragment#2
    //根据需要更改您的值,然后通过Frag 3中的arr
    返回SecondFragment.newInstance(arr);
    违约:
    返回null;
    } 
    } 
    //返回顶部指示器的页面标题
    @凌驾
    公共字符序列getPageTitle(int位置){
    返回“页面”+位置;
    } 
    } 
    
  • 在片段中创建静态方法以接收项目数组