1. 首先是布局文件
<?xml version="1.0" encoding="utf-8"?> <com.handmark.pulltorefresh.library.PullToRefreshScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/pull" > <comh.example.com.chenyixun.MyListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/list_view" ></comh.example.com.chenyixun.MyListView> </com.handmark.pulltorefresh.library.PullToRefreshScrollView>下面是代码的操作
package comh.example.com.chenyixun.MyFrangment; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ListView; import android.widget.ScrollView; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshScrollView; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import comh.example.com.chenyixun.Bean.UserBean; import comh.example.com.chenyixun.R; /** * Created by ASUS on 2018/1/18. */ public class Fragment01 extends Fragment { private List<UserBean.ResultBean.DataBean> list = new ArrayList<>(); private ViewPager pager; private PullToRefreshScrollView pull; private ListView list_view; private int type = 1; private String url = "http://v.juhe.cn/toutiao/index?type=top&key=2f092bd9ce76c0257052d6d3c93c11b4"; private MyAdaper myAdaper; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment01, container, false); pull = view.findViewById(R.id.pull); list_view = view.findViewById(R.id.list_view); getshezhi(); getReataData(url); return view; } public void getshezhi(){ //进行设置 pull.setMode(PullToRefreshScrollView.Mode.BOTH); pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() { //刷新 和 加载的方法 @Override public void onPullDownToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) { type = 1; url = "http://v.juhe.cn/toutiao/index?type=top&key=2f092bd9ce76c0257052d6d3c93c11b4"; getReataData(url); } @Override public void onPullUpToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) { type = 2; url = "http://v.juhe.cn/toutiao/index?type=top&key=2f092bd9ce76c0257052d6d3c93c11b4"; getReataData(url); } }); } public void getReataData(String url){ MyAsTask myAsTask = new MyAsTask(new MyAsTask.Haha() { @Override public void MyJson(String s) { Gson gson = new Gson(); UserBean userBean = gson.fromJson(s, UserBean.class); if(type == 1){ list.clear(); } list.addAll(userBean.getResult().getData()); //要写在解析的方法里 pull.onRefreshComplete(); //延时关闭下拉刷新 new Handler().postDelayed(new Runnable() { @Override public void run() { pull.onRefreshComplete(); } },1000); getAdaper(); } }); myAsTask.execute(url); } public void getAdaper(){ if(myAdaper == null){ myAdaper = new MyAdaper(getActivity(), list); list_view.setAdapter(myAdaper); }else{ myAdaper.notifyDataSetChanged(); } } }//最后是适配器
class MyAdaper extends BaseAdapter{ private final int ONE_TYPE = 0; private final int TWO_TYPE = 1; private final int TREE_TYPE = 2; private Context context; private List<UserBean.ResultBean.DataBean> list; private final DisplayImageOptions options; public MyAdaper(Context context, List<UserBean.ResultBean.DataBean> list) { this.context = context; this.list = list; //适配器 //使用内存缓存 //使用磁盘缓存 //设置图片色彩模式 //设置图片的缩放模式 options = new DisplayImageOptions.Builder() .cacheInMemory(true)//使用内存缓存 .cacheOnDisk(false)//使用磁盘缓存 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式 .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式 .build(); } @Override public int getCount() { return list.size(); } @Override public int getViewTypeCount() { return 3; } @Override public int getItemViewType(int position) { if(position%3==0){ return TREE_TYPE; }else if(position%2 == 0) { return TWO_TYPE; }else{ return ONE_TYPE; } } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { int type = getItemViewType(i); if(type == ONE_TYPE){ ListHolder holder; if(view == null){ view = View.inflate(context, R.layout.item01,null); holder = new ListHolder(); holder.image = view.findViewById(R.id.item_image); holder.text = view.findViewById(R.id.item_text); view.setTag(holder); }else{ holder = (ListHolder) view.getTag(); } //赋值操作 holder.text.setText(list.get(i).getTitle()); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(),holder.image,options); return view; }else if(type == TWO_TYPE){ ListHolder2 holder; if(view == null){ view = View.inflate(context, R.layout.item02,null); holder = new ListHolder2(); holder.image = view.findViewById(R.id.item02_image); holder.image1 = view.findViewById(R.id.item02_image1); holder.text = view.findViewById(R.id.item02_text); view.setTag(holder); }else{ holder = (ListHolder2) view.getTag(); } //赋值操作 holder.text.setText(list.get(i).getTitle()); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(),holder.image,options); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s02(),holder.image1,options); return view; }else{ ListHolder3 holder; if(view == null){ view = View.inflate(context, R.layout.item03,null); holder = new ListHolder3(); holder.image = view.findViewById(R.id.item03_image); holder.image1 = view.findViewById(R.id.item03_image1); holder.image2= view.findViewById(R.id.item03_image2); holder.text = view.findViewById(R.id.item03_text); view.setTag(holder); }else{ holder = (ListHolder3) view.getTag(); } //赋值操作 holder.text.setText(list.get(i).getTitle()); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(),holder.image,options); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s02(),holder.image1,options); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s03(),holder.image2,options); return view; } } class ListHolder { TextView text; ImageView image; } class ListHolder2{ TextView text; ImageView image; ImageView image1; } class ListHolder3{ TextView text; ImageView image; ImageView image1; ImageView image2; } }