先导入一个MyListview的类
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ptr="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ptr="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.handmark.pulltorefresh.library.PullToRefreshScrollView
android:id="@+id/refresh_scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
ptr:ptrAnimationStyle="flip"
ptr:ptrDrawable="@drawable/default_ptr_flip"
ptr:ptrHeaderBackground="#383838"
ptr:ptrHeaderTextColor="#FFFFFF">
android:id="@+id/refresh_scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
ptr:ptrAnimationStyle="flip"
ptr:ptrDrawable="@drawable/default_ptr_flip"
ptr:ptrHeaderBackground="#383838"
ptr:ptrHeaderTextColor="#FFFFFF">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.youth.banner.Banner
android:id="@+id/myBanner"
android:layout_width="match_parent"
android:layout_height="200dp"></com.youth.banner.Banner>
android:id="@+id/myBanner"
android:layout_width="match_parent"
android:layout_height="200dp"></com.youth.banner.Banner>
<animtest.com.example.e531.week3_10month_demo.views.MyListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"></animtest.com.example.e531.week3_10month_demo.views.MyListView>
</LinearLayout>
</com.handmark.pulltorefresh.library.PullToRefreshScrollView>
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"></animtest.com.example.e531.week3_10month_demo.views.MyListView>
</LinearLayout>
</com.handmark.pulltorefresh.library.PullToRefreshScrollView>
</LinearLayout>
activity
package animtest.com.example.e531.week3_10month_demo.fragments;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.ScrollView;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.ILoadingLayout;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
import com.youth.banner.Banner;
import java.util.ArrayList;
import java.util.List;
import animtest.com.example.e531.week3_10month_demo.Bean.Result;
import animtest.com.example.e531.week3_10month_demo.R;
import animtest.com.example.e531.week3_10month_demo.Utils.MyBannerImageLoader;
import animtest.com.example.e531.week3_10month_demo.Utils.MyTask;
import animtest.com.example.e531.week3_10month_demo.adapter.MyAdapter;
/*
* Created by e531 on 2017/10/24.
*/
public class RecommendFragment extends Fragment {
private Banner myBanner;
private PullToRefreshScrollView scrollView;
private ListView listView;
//列表显示的数据
private List<Result.DataEntity> datas=new ArrayList<>();
private MyAdapter myAdapter;
//页数
private int startNum=0;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v=View.inflate(getActivity(), R.layout.recommend_layout,null);
myBanner= (Banner) v.findViewById(R.id.myBanner);
scrollView = (PullToRefreshScrollView) v.findViewById(R.id.refresh_scroll_view);
listView = (ListView) v.findViewById(R.id.lv);
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initRefreshScrollView();
//请求数据
addToTop();
}
public void initRefreshScrollView(){
//设置模式
scrollView.setMode(PullToRefreshBase.Mode.BOTH);
//设置头尾布局显示的文本
ILoadingLayout headerLables=scrollView.getLoadingLayoutProxy(true,false);
headerLables.setPullLabel("下拉刷新");
headerLables.setRefreshingLabel("正在刷新");
headerLables.setReleaseLabel("松开刷新");
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.ScrollView;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.ILoadingLayout;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
import com.youth.banner.Banner;
import java.util.ArrayList;
import java.util.List;
import animtest.com.example.e531.week3_10month_demo.Bean.Result;
import animtest.com.example.e531.week3_10month_demo.R;
import animtest.com.example.e531.week3_10month_demo.Utils.MyBannerImageLoader;
import animtest.com.example.e531.week3_10month_demo.Utils.MyTask;
import animtest.com.example.e531.week3_10month_demo.adapter.MyAdapter;
/*
* Created by e531 on 2017/10/24.
*/
public class RecommendFragment extends Fragment {
private Banner myBanner;
private PullToRefreshScrollView scrollView;
private ListView listView;
//列表显示的数据
private List<Result.DataEntity> datas=new ArrayList<>();
private MyAdapter myAdapter;
//页数
private int startNum=0;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v=View.inflate(getActivity(), R.layout.recommend_layout,null);
myBanner= (Banner) v.findViewById(R.id.myBanner);
scrollView = (PullToRefreshScrollView) v.findViewById(R.id.refresh_scroll_view);
listView = (ListView) v.findViewById(R.id.lv);
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initRefreshScrollView();
//请求数据
addToTop();
}
public void initRefreshScrollView(){
//设置模式
scrollView.setMode(PullToRefreshBase.Mode.BOTH);
//设置头尾布局显示的文本
ILoadingLayout headerLables=scrollView.getLoadingLayoutProxy(true,false);
headerLables.setPullLabel("下拉刷新");
headerLables.setRefreshingLabel("正在刷新");
headerLables.setReleaseLabel("松开刷新");
ILoadingLayout footerLables=scrollView.getLoadingLayoutProxy(false,true);
footerLables.setPullLabel("上拉加载");
footerLables.setRefreshingLabel("正在加载");
footerLables.setReleaseLabel("松开加载");
//设置监听事件
scrollView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
//下拉刷新
addToTop();
closeRefresh();
}
footerLables.setPullLabel("上拉加载");
footerLables.setRefreshingLabel("正在加载");
footerLables.setReleaseLabel("松开加载");
//设置监听事件
scrollView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
//下拉刷新
addToTop();
closeRefresh();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
//上拉加载更多
addToBottom();
closeRefresh();
}
});
}
public void addToBottom(){
startNum=startNum+20;
//请求数据
MyTask myTask=new MyTask(new MyTask.Icallbacks() {
@Override
public void updateUiByjson(String jsonstr) {
Gson gson=new Gson();
Result result=gson.fromJson(jsonstr, Result.class);
//得到列表显示的数据
datas.addAll(result.getData());
//设置适配器
setAdapter();
//设置轮播图
setBanner(result.getDataScroll());
}
});
myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum="+startNum);
}
public void addToTop(){
//请求数据
MyTask myTask=new MyTask(new MyTask.Icallbacks() {
@Override
public void updateUiByjson(String jsonstr) {
Gson gson=new Gson();
Result result=gson.fromJson(jsonstr, Result.class);
//清空
datas.clear();
//得到列表显示的数据
datas.addAll(result.getData());
//设置适配器
setAdapter();
//设置轮播图
setBanner(result.getDataScroll());
}
});
myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0");
}
/**
* 设置轮播图
* @param lists 图片集合数据
*/
public void setBanner(List<Result.DataScrollEntity> lists){
if(lists==null){
return;
}
List<String> picPaths=new ArrayList<>();
for(int i=0;i<lists.size();i++){
Log.d("zzz",""+lists.get(i).getIMAGEURL());
picPaths.add("http://www.93.gov.cn"+lists.get(i).getIMAGEURL());
}
myBanner.setImages(picPaths);//设置图片集合
myBanner.setImageLoader(new MyBannerImageLoader());//设置图片加载器
myBanner.isAutoPlay(true);//设置是否是自动播放
myBanner.setDelayTime(2000);//设置每张图片的播放的间隔时间
myBanner.start();//开始执行
}
/** 设置适配器*/
public void setAdapter(){
if(myAdapter==null){
myAdapter=new MyAdapter(datas,getActivity());
listView.setAdapter(myAdapter);
}else{
myAdapter.notifyDataSetChanged();
}
}
/**
* 关闭刷新
*/
public void closeRefresh(){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
scrollView.onRefreshComplete();
}
},1000);
}
}
public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
//上拉加载更多
addToBottom();
closeRefresh();
}
});
}
public void addToBottom(){
startNum=startNum+20;
//请求数据
MyTask myTask=new MyTask(new MyTask.Icallbacks() {
@Override
public void updateUiByjson(String jsonstr) {
Gson gson=new Gson();
Result result=gson.fromJson(jsonstr, Result.class);
//得到列表显示的数据
datas.addAll(result.getData());
//设置适配器
setAdapter();
//设置轮播图
setBanner(result.getDataScroll());
}
});
myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum="+startNum);
}
public void addToTop(){
//请求数据
MyTask myTask=new MyTask(new MyTask.Icallbacks() {
@Override
public void updateUiByjson(String jsonstr) {
Gson gson=new Gson();
Result result=gson.fromJson(jsonstr, Result.class);
//清空
datas.clear();
//得到列表显示的数据
datas.addAll(result.getData());
//设置适配器
setAdapter();
//设置轮播图
setBanner(result.getDataScroll());
}
});
myTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0");
}
/**
* 设置轮播图
* @param lists 图片集合数据
*/
public void setBanner(List<Result.DataScrollEntity> lists){
if(lists==null){
return;
}
List<String> picPaths=new ArrayList<>();
for(int i=0;i<lists.size();i++){
Log.d("zzz",""+lists.get(i).getIMAGEURL());
picPaths.add("http://www.93.gov.cn"+lists.get(i).getIMAGEURL());
}
myBanner.setImages(picPaths);//设置图片集合
myBanner.setImageLoader(new MyBannerImageLoader());//设置图片加载器
myBanner.isAutoPlay(true);//设置是否是自动播放
myBanner.setDelayTime(2000);//设置每张图片的播放的间隔时间
myBanner.start();//开始执行
}
/** 设置适配器*/
public void setAdapter(){
if(myAdapter==null){
myAdapter=new MyAdapter(datas,getActivity());
listView.setAdapter(myAdapter);
}else{
myAdapter.notifyDataSetChanged();
}
}
/**
* 关闭刷新
*/
public void closeRefresh(){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
scrollView.onRefreshComplete();
}
},1000);
}
}
适配器
package animtest.com.example.e531.week3_10month_demo.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.graphics.Bitmap;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
import animtest.com.example.e531.week3_10month_demo.Bean.Result;
import animtest.com.example.e531.week3_10month_demo.R;
import animtest.com.example.e531.week3_10month_demo.Utils.ImageloaderUtil;
/**
* Created by e531 on 2017/10/14.
*/
public class MyAdapter extends BaseAdapter {
import animtest.com.example.e531.week3_10month_demo.R;
import animtest.com.example.e531.week3_10month_demo.Utils.ImageloaderUtil;
/**
* Created by e531 on 2017/10/14.
*/
public class MyAdapter extends BaseAdapter {
private List<Result.DataEntity> datas;
private Context context;
private DisplayImageOptions options;
public MyAdapter(List<Result.DataEntity> datas, Context context) {
this.datas = datas;
this.context = context;
private Context context;
private DisplayImageOptions options;
public MyAdapter(List<Result.DataEntity> datas, Context context) {
this.datas = datas;
this.context = context;
}
@Override
public int getCount() {
return datas.size();
}
public int getCount() {
return datas.size();
}
@Override
public Object getItem(int position) {
return datas.get(position);
}
public Object getItem(int position) {
return datas.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView==null){
convertView=View.inflate(context, R.layout.item,null);
holder=new ViewHolder();
holder.tvTitle= (TextView) convertView.findViewById(R.id.tv_title);
holder.img= (ImageView) convertView.findViewById(R.id.img);
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView==null){
convertView=View.inflate(context, R.layout.item,null);
holder=new ViewHolder();
holder.tvTitle= (TextView) convertView.findViewById(R.id.tv_title);
holder.img= (ImageView) convertView.findViewById(R.id.img);
convertView.setTag(holder);
}else{
holder=(ViewHolder) convertView.getTag();
}else{
holder=(ViewHolder) convertView.getTag();
}
holder.tvTitle.setText(datas.get(position).getTITLE());
if(datas.get(position).getIMAGEURL()==null || datas.get(position).getIMAGEURL().equals("")){
holder.img.setImageResource(R.mipmap.ic_launcher);
}else{
//imageLoader加载图片
ImageLoader.getInstance().displayImage(datas.get(position).getIMAGEURL(),holder.img, ImageloaderUtil.getImageOptions());
}
holder.tvTitle.setText(datas.get(position).getTITLE());
if(datas.get(position).getIMAGEURL()==null || datas.get(position).getIMAGEURL().equals("")){
holder.img.setImageResource(R.mipmap.ic_launcher);
}else{
//imageLoader加载图片
ImageLoader.getInstance().displayImage(datas.get(position).getIMAGEURL(),holder.img, ImageloaderUtil.getImageOptions());
}
return convertView;
}
}
class ViewHolder{
TextView tvTitle;
ImageView img;
}
}
TextView tvTitle;
ImageView img;
}
}