XListView实现上拉刷新,下拉加载数据的功能,此控件于大约两年前已停止更新维护,我用这个就是从githup(红字的官网)上下载的一个文件,然后做成一个依赖库,感兴趣的同学可以尝试下。
依赖库的使用:File中导入项目(Import Mudole),然后快捷键ctrl+shift+alt+s,调出Dependencies选上要依赖的文件,点击右上+号,第三个选项,选择要与哪个文件进行关联,然后点击ok。
实现思路
/**
* 官网:https://github.com/Maxwin-z/XListView-Android/tree/master/src/me/maxwin/view
* XlistView:就是一个实现了上拉刷新,下拉加载的自定义控件,我们如果集成他,就可以很轻松实现这些效果
* 1.搭建XlistView的环境(拷贝资源:java代码,XML布局,strings资源,图片)
* 2.布局编写,初始化控件
* 3.初始化数据(一般网络的数据,进行解析封装到集合中,去使用)
* 4.相当于listVIew的使用,创建适配器,设置适配器等等,(此时效果不佳)
* 5.要进行XlistVIew设置下拉刷新,上拉加载的开启操作
* 6.设置XlistVIew设置下拉刷新,上拉加载的监听操作
* 7.编写下拉刷新,上拉加载的业务逻辑代码
* 8.关闭下拉刷新,上拉加载的业务逻辑
* 注意:如果你想把数据放到listVIew顶部,那么这个数据就放到集合的0的位置就可以了.
* 提示你改布局,不要动控件的ID,你直接改控件内容即可
*/
Xml代码 注意:包名不能出错,如果这有问题,会让你加载布局的那一行代码报错
<com.bawei.xlistviewlibrary.XListView android:id="@+id/xListView" android:layout_width="match_parent" android:layout_height="match_parent"/>
Activity代码实现
package com.example.xlistview2; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.widget.ArrayAdapter; import com.bawei.xlistviewlibrary.XListView; import java.util.ArrayList; public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener { private XListView lv; private ArrayList<String> list; private ArrayAdapter<String> mAdapter; Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { //刷新listView mAdapter.notifyDataSetChanged(); //隐藏头和尾 closeXlistView(); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (XListView) findViewById(R.id.xListView); //初始化数据 initData(); //开启下拉刷新 lv.setPullRefreshEnable(true); //开启加载更多可用 lv.setPullLoadEnable(true); //listView的适配器 mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_2, android.R.id.text1, list); //设置适配器 lv.setAdapter(mAdapter); //设置XlistView的上拉加载,下拉刷新的接口 lv.setXListViewListener(this); } private void initData() { list = new ArrayList<>(); for(int x=0; x<10; x++){ list.add("希望我们都会越来越好!!"); } } /** * 下拉刷新 */ @Override public void onRefresh() { handler.postDelayed(new Runnable() { @Override public void run() { list.add(0,"今天是个好日子!!"); handler.sendEmptyMessage(0); } },2000); } /** * 上拉加载 */ @Override public void onLoadMore() { handler.postDelayed(new Runnable() { @Override public void run() { for(int x=0; x<10; x++){ list.add("心想的事儿都能成!!"); } handler.sendEmptyMessage(0); } },2000); } //刷新给关闭的逻辑代码 private void closeXlistView() { //停止加载更多 lv.stopLoadMore(); //停止刷新 lv.stopRefresh(); //更新时间 注意,你可以自己实现一个方法,改变时间,在这我就不多写了 lv.setRefreshTime("2017/7/19"); } }
实现效果