Android 拉动刷新和加载更多类似facebook的listview

Android 拉动刷新和加载更多类似facebook的listview,android,android-fragments,android-viewpager,android-fragmentactivity,viewpagerindicator,Android,Android Fragments,Android Viewpager,Android Fragmentactivity,Viewpagerindicator,这里我用的是滑动抽屉。在该对话框中,单击主页图标将显示3个选项卡 1) 我应该申请哪一个概念? 2) 我想像facebook一样在listview中应用pulltoreferesh和loadmore? 在这一点上,您还看到,当向上滚动progressbar时,它会隐藏,而request会取消。 我自己没有使用过这个库,它已经停止使用了(2个月前),但它的示例和所有内容看起来都很棒: 从我读到的内容来看,基本上您需要用库的listview替换您自己的listview并导入jar文件,这样就可以了

这里我用的是滑动抽屉。在该对话框中,单击主页图标将显示3个选项卡
1) 我应该申请哪一个概念?
2) 我想像facebook一样在listview中应用
pulltoreferesh
loadmore
? 在这一点上,您还看到,当向上滚动progressbar时,它会隐藏,而request会取消。


我自己没有使用过这个库,它已经停止使用了(2个月前),但它的示例和所有内容看起来都很棒:

从我读到的内容来看,基本上您需要用库的listview替换您自己的listview并导入jar文件,这样就可以了;-)

公共类ListDemo扩展了片段{
ArrayAdapter文件;
私有链接列表;
PullAndLoadListView lyt;
//ListView lv1;
//要在ListView中显示的数据
私有字符串[]mNames={“Fabian”、“Carlos”、“Alex”、“Andrea”、“Karla”,
“弗雷迪”、“拉扎罗”、“赫克托”、“卡罗莱纳”、“埃德温”、“约翰”,
“埃德米拉”、“安德烈斯”};
//要在ListView中显示的数据
私有字符串[]mAnimals={“Perro”、“Gato”、“Oveja”、“Elefante”、“Pez”,
“尼库罗”、“博卡奇科”、“楚查”、“居里”、“拉顿”、“阿吉拉”,
“利昂”、“吉拉法”};
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
super.onCreateView(充气机、容器、保存状态);
最终视图v=充气机。充气(R.layout.tab\u frag3\u布局,容器,假);
mListItems=新链接列表();
mListItems.addAll(Arrays.asList(mNames));
lyt=(PullAndLoadListView)v.findViewById(R.id.tab\u frag3\u ListView 1);
if(容器==null){
返回null;
}
files=newarrayadapter(getActivity(),android.R.layout.simple\u list\u item\u 1,mListItems);
setAdapter(文件);
setOnRefreshListener(新的OnRefreshListener(){
@凌驾
公共void onRefresh(){
//TODO自动生成的方法存根
新建PullToRefreshDataTask().execute();
}
});
setOnLoadMoreListener(新的OnLoadMoreListener(){
@凌驾
public void onLoadMore(){
//TODO自动生成的方法存根
新建LoadMoreDataTask().execute();
}
});
返回v;
}
私有类LoadMoreDataTask扩展了AsyncTask{
@凌驾
受保护的Void doInBackground(Void…参数){
如果(isCancelled()){
返回null;
}
//模拟后台任务
试一试{
睡眠(1000);
}捕捉(中断异常e){
}
对于(int i=0;i

这是库的源代码

使用这个库,我几天前就用过了,非常好用:


我正在使用两个库android-support-v4.jar、LoadMoreListView(com.costum.android.widget),那么到底是什么问题呢?我有一个链接,指向listview或listfragment中的拉刷新库。我从来没有听说过另一个图书馆,现在也不打算去看看。为什么不试试我的链接呢?你能不能也上传你的xml文件?请像这样在你的xml中添加自定义listview好的谢谢。。我做到了:)
public class ListDemo extends Fragment{
    ArrayAdapter<String> files;
    private LinkedList<String> mListItems;
    PullAndLoadListView lyt ;
    //  ListView lv1;

    // The data to be displayed in the ListView
    private String[] mNames = { "Fabian", "Carlos", "Alex", "Andrea", "Karla",
            "Freddy", "Lazaro", "Hector", "Carolina", "Edwin", "Jhon",
            "Edelmira", "Andres" };

    // The data to be displayed in the ListView
    private String[] mAnimals = { "Perro", "Gato", "Oveja", "Elefante", "Pez",
            "Nicuro", "Bocachico", "Chucha", "Curie", "Raton", "Aguila",
            "Leon", "Jirafa" };



    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        final View v = inflater.inflate(R.layout.tab_frag3_layout, container, false);
        mListItems = new LinkedList<String>();
        mListItems.addAll(Arrays.asList(mNames));
        lyt = (PullAndLoadListView)v.findViewById(R.id.tab_frag3_listview1);

        if (container == null) {
            return null;
        }

        files = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,mListItems);
        lyt.setAdapter(files);
        lyt.setOnRefreshListener(new OnRefreshListener() {

            @Override
            public void onRefresh() {
                // TODO Auto-generated method stub
                new PullToRefreshDataTask().execute();
            }
        });
        lyt.setOnLoadMoreListener(new OnLoadMoreListener() {

            @Override
            public void onLoadMore() {
                // TODO Auto-generated method stub
                new LoadMoreDataTask().execute();
            }
        });
        return v;

    }
    private class LoadMoreDataTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {

            if (isCancelled()) {
                return null;
            }

            // Simulates a background task
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }

            for (int i = 0; i < mAnimals.length; i++)
                mListItems.add(mAnimals[i]);

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            mListItems.add("Added after load more");

            // We need notify the adapter that the data have been changed
            files.notifyDataSetChanged();

            // Call onLoadMoreComplete when the LoadMore task, has finished
            lyt.onLoadMoreComplete();

            super.onPostExecute(result);
        }

        @Override
        protected void onCancelled() {
            // Notify the loading more operation has finished
            lyt.onLoadMoreComplete();
        }
    }

    private class PullToRefreshDataTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {

            if (isCancelled()) {
                return null;
            }

            // Simulates a background task
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }

            for (int i = 0; i < mAnimals.length; i++)
                mListItems.addFirst(mAnimals[i]);

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            mListItems.addFirst("Added after pull to refresh");

            // We need notify the adapter that the data have been changed
            files.notifyDataSetChanged();

            // Call onLoadMoreComplete when the LoadMore task, has finished
            lyt.onRefreshComplete();

            super.onPostExecute(result);
        }

        @Override
        protected void onCancelled() {
            // Notify the loading more operation has finished
            lyt.onLoadMoreComplete();
        }
    }

}