1.导入依赖
compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
compile 'com.youth.banner:banner:1.4.9'
2.写布局(注意:两个布局是分开写的,在java代码中添加到一起)
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
3.再写一个banner的xml
<com.youth.banner.Banner
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="200dp" />
4.请求数据加载数据
//请求数据方法
private void initDa(String url) {
new Asynctack().execute(url);
}
//创建异步请求数据类
class Asynctack extends AsyncTask<String, Void, String> {
//此方法执行在子线程
@Override
protected String doInBackground(String... params) {
return ls.getString(params[0]);
}
//此方法执行在主线程用于更新UI
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Gson gson = new Gson();
Bean bean = gson.fromJson(s, Bean.class);
List<Bean.DataBean> data = bean.getData();
List<Bean.DataScrollBean> dataScroll = bean.getDataScroll();
for (int i = 0; i < dataScroll.size(); i++) {
list.add("http://www.93.gov.cn" + dataScroll.get(i).getIMAGEURL());
}
banner.setImages(list);
banner.setImageLoader(new MyImageLoader());
banner.start();
jsonlist.addAll(data);
madapter.notifyDataSetChanged();
refreshListView.onRefreshComplete();
}
}
5.添加适配器(适配器的布局是一个imageview和TextView)
class Madapter extends BaseAdapter {
@Override
public int getCount() {
return jsonlist.size();
}
@Override
public Object getItem(int position) {
return jsonlist.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = View.inflate(getActivity(), R.layout.item, null);
viewHolder.tupian = convertView.findViewById(R.id.tupian);
viewHolder.titles = convertView.findViewById(R.id.wenzi);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
ImageLoader instance = ImageLoader.getInstance();
if (jsonlist.get(position).getIMAGEURL() != null) {
ImageLoader.getInstance().displayImage((String) jsonlist.get(position).getIMAGEURL(), viewHolder.tupian, ImageloaderUtil.getImageOptions());
}
viewHolder.titles.setText(jsonlist.get(position).getTITLE());
return convertView;
}
}
class ViewHolder {
ImageView tupian;
TextView titles;
}
6.`给PullToRefreshListVie向上转型,并加载banner的视图
//实例化头布局
View view1 = View.inflate(getActivity(), R.layout.head_view, null);
//初始化头布局Banner控件
banner = (Banner) view1.findViewById(R.id.banner);
//初始化PullTORefreshListView
refreshListView = (PullToRefreshListView) view.findViewById(R.id.listview);
//向上转型,给父控件添加头布局
ListView listView = refreshListView.getRefreshableView();
//添加头布局
listView.addHeaderView(view1);
//设置上下拉模式
refreshListView.setMode(PullToRefreshBase.Mode.BOTH);
//实例化适配器
madapter = new Madapter();
//PRL关联适配器
refreshListView.setAdapter(madapter);
7.给PullToRefreshListVie添加上下拉监听
//PRL上下拉监听
refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
//此方法用于下拉做逻辑处理
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
jsonlist.clear();
initDa(url);
}
//此方法用于上拉做逻辑处理
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
int index = ima * 20;
ima++;
String url2 = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=" + index;
Toast.makeText(getActivity(), url2 + "", Toast.LENGTH_SHORT).show();
initDa(url2);
}
});