有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何添加下一组片段而不干扰FragmentPagerAdapter中的当前片段?

下面是第一次添加片段的代码`

`if(mcursor==null){ items=(ArrayList)cnews。getItems(); mcursor=cnews。getNextPageToken()

        for (int i = 0; i < items.size(); i++) {

            Fragment cm = ContentFragment.newInstance(i, items.get(i).getTitle(),
                    items.get(i).getImageuri(), items.get(i).getDate(), items.get(i).getPublsher(), items.get(i).getDescription());
            frags.add(cm);

        }
        viewPager.setAdapter(new ContentfragmentAdapter(getSupportFragmentManager(), frags));

    }else{
        items = (ArrayList<News>) cnews.getItems();
        mcursor = cnews.getNextPageToken();
        for (int i = 0; i < items.size(); i++) {

            Fragment cm = ContentFragment.newInstance(i, items.get(i).getTitle(),
                    items.get(i).getImageuri(), items.get(i).getDate(), items.get(i).getPublsher(), items.get(i).getDescription());
            frags.add(cm);

        }

在其他情况下,我想在服务器调用后添加更多片段。如何在不删除旧片段的情况下更新适配器

请帮帮我,我是安卓开发的新手。 非常感谢


共 (1) 个答案

  1. # 1 楼答案

    这里最重要的一点是你必须打电话

    notifyDataSetChanged()
    

    使基础数据结构相应更新 包括触发ViewPager的重画。 也不要忘记getCount()还必须返回预期的元素数(即这里没有硬编码值)

    public class SectionsPagerAdapter extends FragmentPagerAdapter {
    
        List<String> tagList;
    
        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
            tagList = new ArrayList<>();
    
        }
    
        @Override
        public Fragment getItem(int position) {
            // getItem is called to instantiate the fragment for the given page.
    
            return PlaceholderFragment.newInstance(tagList.get(position));
        }
    
        @Override
        public int getCount() {
    
            return tagList.size();
        }
    
        @Override
        public CharSequence getPageTitle(int position) {
    
            return "SECTION "+(position+1);
        }
    
        public void add(int position, String key)
        {
            tagList.add(position, key);
            notifyDataSetChanged();
        }
    
    
    
    }
    

    Two fragments added four fragments added