Android-----XlistView上拉刷新下拉加载更多

来源:互联网 发布:第六季网络复活赛 编辑:程序博客网 时间:2024/06/06 01:05

1.想要实现xlistview上拉刷新下拉加载更多必须导入xlistview文件,在file-new-ImportModule-选择路径导入-导入完成之后会出现版本不一致,这时候把导入进来的包的版本号改为当前studio的版本号同步下就可以了。(把导入包的版本号改为当前studio的版本号同步下就可以了。)

封装包地址:https://github.com/lzs4510/ViewPagerAndFragmentDemo2

2.需要同步xlistview 否则不能引用里面的方法,具体为点击file-projectstructure-app-Dependencies-右上角加号-3 Moduledependency-选择xlistview-点击OK就可以了。


思路:

在MainActivity中实现IXListViewListener需要重写两个方法即onRefresh();和onLoadMore();还要手动写一个停止刷新的方法stop();

  在onRefresh()中写入页数,通常为第一页,然后list清空集合,最后是调用加载数据的方法。

onLoadMore()中页数++,并调用加载数据的方法。

stop()中通过Xlistview调用stopRefresh(); stopLoadMore();  setRefreshTime();三个方法  因为在刷新和加载更多的方法中都调用了stop();

最后在Handler中适配器刷新完在调用停止的方法stop();


MainActivity中:
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{    private XListView mxv;    private Myadapter md;    //定义接口的页数    private int page=1;    private ArrayList<News.DataBean.ArticleListBean> mlist=new ArrayList<>();    private String url="http://zkread.com/htnewsroom/v2.0/mobileapp/user-0/categories/articles?itemType=recommendation&size=20&firstId=1339380&itemName=%25E6%258E%25A8%25E8%258D%2590&itemId=-1&page=";    private Handler hand=new Handler(){        @Override        public void handleMessage(Message msg) {      //当msg传值为1时,解析字符串并添加到集合,刷新数据         if (msg.what==1){             Gson gson=new Gson();             News news = gson.fromJson(msg.obj.toString(), News.class);             mlist.addAll(news.getData().getArticleList());             md.notifyDataSetChanged();             stop();         }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mxv=(XListView)findViewById(R.id.xlist_view);        //重置数据        initdata();    }    private void initdata() {        //xlistview加载更多设置为true        mxv.setPullLoadEnable(true);        mxv.setXListViewListener(this);        //重置适配器        md=new Myadapter(this,mlist);        mxv.setAdapter(md);    }    //加载数据的方法在一个新的线程中    private void loaddata() {        new Thread(){            @Override            public void run() {                String str = HttpUrl.getUrlConnect(url+page);                Message msg=new Message();                msg.obj=str;                msg.what=1;                hand.sendMessage(msg);            }        }.start();    }    //实现IXListViewListener需要重写的两个方法    @Override    public void onRefresh() {        //第一次       page=1;        mlist.clear();        loaddata();    }    @Override    public void onLoadMore() {        page++;        loaddata();    }    //手动写的停止刷新的方法    private void stop() {        mxv.stopRefresh();        mxv.stopLoadMore();        mxv.setRefreshTime("刚刚");    }} 

原创粉丝点击