学无止境
首先今天晚上带给大家的是PullToRefreshListView上下拉刷新使用方法
(请求网络一定记得添加权限!切记!)
1.导入依赖
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
2.添加布局
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pull"
android:layout_width="match_parent"
android:layout_height="match_parent"></com.handmark.pulltorefresh.library.PullToRefreshListView>
3.编写Activity代码
String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/";
ArrayList<Bean.DataBean> list = new ArrayList<>();
private MyAdapter myAdapter;
int page;
private PullToRefreshListView pull;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取控件
pull = findViewById(R.id.pull);
//创建适配器
myAdapter = new MyAdapter(getActivity(), list);
//设置适配器
pull.setAdapter(myAdapter);
//BOTH代表上下拉都支持
//BOTH代表支持上拉和下拉,PULL_FROM_END代表上拉,PULL_FROM_START代表下拉
pull.setMode(PullToRefreshListView.Mode.BOTH);
//设置PullToRefreshListView上下拉监听
pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {//下拉刷新
list.clear();//数据集合清空
initData(0);//默认值为0
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {//上拉加载
initData(page++);//分页,每次加1
}
});
initData(page);//异步方法
return view;
}
//异步方法
private void initData(int page) {
new My().execute(urlString + page);
}
class My extends AsyncTask<String,Void,String>
{
@Override
protected String doInBackground(String... strings) {//在doInBackground执行请求网络数据相关代码
String string = NetUtil.getJson(strings[0]);
return string;
}
@Override
protected void onPostExecute(String s) {//在onPostExecute代表执行任务完成
super.onPostExecute(s);
//开始解析
Gson gson = new Gson();
Bean bean = gson.fromJson(s, Bean.class);
List<Bean.DataBean> data = bean.getData();
//集合包集合
list.addAll(data);
//刷新适配器
//刷新适配器主要是因为一开始进去的时候集合为空,需要在执行任务完成之后刷新适配器展示新的数据
myAdapter.notifyDataSetChanged();
pull.onRefreshComplete();//取消上下拉刷新加载
}
}
}
如有疑问可在博客下方留言
谢谢浏览