如果到达列表末尾,如何实现刷新列表视图并在列表中引入新项目

how to implement refresh listview and bring new items in list if it reach end of list

我不知道如何实现刷新列表视图和添加新项目到列表(如果它到达我的父片段中的列表末尾)。我想我应该先解释一下我的fragments结构,因为我在githup上找到了一些教程甚至是库但是无法使用。我的片段的层次结构如下所示。我正在使用 中实现的 fragment pager adapter。请考虑这一点。我开始我的异步任务,从 Parent Fragment 中的远程服务器获取列表项,然后用这些数据开始我的 child fragments。之后此数据变为静态,直到用户再次启动 activity。我不要那个。如果滚动到列表末尾,我需要用户可以刷新列表并带来新项目。我感谢任何知道可以启发我的教程或代码的人。

MainActivity -> MainFragment --> Child Fragment1
                             --> Child Fragment2

更新:

pieace of code form my MainFragment

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        ...
        rootView = inflater.inflate(R.layout.fragmentfeed2, container, false);
        ...
         startAsyncTask();// to bring List Object whish will be show in feed list and map
        return rootView;
}

@Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        mViewPager = (ViewPager) view.findViewById(R.id.viewpager);
        mViewPager.setAdapter(new PlacesDisplayTypePagerAdapter(getChildFragmentManager()));
        mViewPager.setOffscreenPageLimit(2);
        mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs);
        mSlidingTabLayout.setViewPager(mViewPager);
        mSlidingTabLayout.setHostingFragment(this);
        mSlidingTabLayout.setSelectedIndicatorColors(getActivity().getResources().getColor(R.color.sow_actionbar_bg_color));

        if(getArguments() != null)
        {
            int currentTab = getArguments().getInt("1");
            mViewPager.setCurrentItem(currentTab);
        }
    }

class PlacesDisplayTypePagerAdapter extends FragmentPagerAdapter {
        public PlacesDisplayTypePagerAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);
        }

        @Override
        public int getCount() {
            return 2;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            switch (position) {
                case 0:
                    return message(R.string.tab_list);
                case 1:
                    return message(R.string.tab_map);
                default:
                    return message(R.string.tab_list);
            }
        }

        @Override
        public Fragment getItem(int position) {
            Bundle bundle = new Bundle();
            bundle.putParcelableArrayList(Consts.bundle_adList, (ArrayList<? extends Parcelable>) events);
            bundle.putInt("startFrom", startFrom);
            bundle.putInt("listType", listType);
            bundle.putDoubleArray(Consts.bundle_locArray, targetLoc);
            if (position == 0) {
                return FeedListFragment.newInstance(bundle);
            } else
                return FeedMapFragment.newInstance(bundle);
        }
    }

正如您从我的代码中看到的,Main fragments 有 2 个名为 FeedListFragment 和 FeedMapFragment 的子级。我现在如何检测 scrool 到达列表视图的末尾,然后启动一个新的异步任务以带来新项目并通知您的列表适配器。但是我的主要片段如何处理呢? Listfragment 可以在刷新或通过 getParentFragment 加载新项目时触发主框架。主要片段如何将这个新数据发送到已经膨胀的子片段? 提前致谢。帮我弄清楚。

这是我在到达列表视图末尾时加载更多项目的实现。这应该可以帮助您开始!

myListView.setOnScrollListener(new OnScrollListener() {
        private int lastVisibleItem;
        private int totalItemCount;
        private boolean isEndOfList;

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
            this.totalItemCount = totalItemCount;
            this.lastVisibleItem = firstVisibleItem + visibleItemCount - 1;
            // prevent checking on short lists
            if (totalItemCount > visibleItemCount)
                checkEndOfList();
        }

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // state doesn't matter
        }

        private synchronized void checkEndOfList() {
            // trigger after 2nd to last item
            if (lastVisibleItem >= (totalItemCount - 2)) {
                if (!isEndOfList) {
                    // LOAD MORE ITEMS HERE!
                }
                isEndOfList = true;
            } else {
                isEndOfList = false;
            }
        }
    });