本篇代码需加依赖: json依赖 implementation 'com.google.code.gson:gson:2.2.4' 把网络请求数据转成String类型 charStreams implementation 'com.google.guava:guava:16.0.1' 网络图片的依赖 implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' MainActivity其中一个Fragment页面 import android.annotation.SuppressLint; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import com.bwie.asus.mnweek2.MainActivity; import com.bwie.asus.mnweek2.R; import com.bwie.asus.mnweek2.adapter.LAdapter; import com.bwie.asus.mnweek2.bean.JsonBean; import com.bwie.asus.mnweek2.utils.UrlConn; import com.google.gson.Gson; import java.util.ArrayList; import java.util.Date; import java.util.List; import xlistview.bawei.com.xlistviewlibrary.XListView; public class Fragmentone extends Fragment { public int i=1; private XListView listView; int page; private String path="http://www.xieast.com/api/news/news.php?page="; private LAdapter adapter; private List<JsonBean.DataBean> data1 = new ArrayList<>(); @SuppressLint("HandlerLeak") //Handler private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 1: //刷新 adapter.notifyDataSetChanged(); //关闭 close(); break; case 2: Toast.makeText(getActivity(),"下拉",Toast.LENGTH_LONG).show(); //刷新 adapter.notifyDataSetChanged(); //关闭刷新 close(); break; case 3: Toast.makeText(getActivity(),"上拉加载"+data1,Toast.LENGTH_LONG).show(); //刷新 adapter.notifyDataSetChanged(); //关闭加载 close(); break; } } }; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { page =1; View view = inflater.inflate(R.layout.frag_one, container, false); listView = view.findViewById(R.id.listview); listView.setPullLoadEnable(true); listView.setPullRefreshEnable(true); adapter = new LAdapter(getActivity(), (ArrayList<JsonBean.DataBean>) data1); listView.setAdapter(adapter); //刷新/加载 监听 listView.setXListViewListener(new XListView.IXListViewListener() { @Override //刷新 public void onRefresh() { page = 1; initData(page); } @Override //加载 public void onLoadMore() { page++; initData(page); } }); initData(1); return view; } //加载 数据 在一个地方搞定 public void initData(final int i){ new Thread(){ @Override public void run() { super.run(); UrlConn urlConn=new UrlConn(); String data = urlConn.getData(path + i); Gson gson=new Gson(); JsonBean jsonBean = gson.fromJson(data, JsonBean.class); if(page == 1) { data1.clear(); } data1.addAll(jsonBean.getData()); Message message=Message.obtain(); message.what=1; message.obj=adapter; handler.sendMessage(message); } }.start(); } //关闭刷新 public void close(){ Date date=new Date(); date.getTime(); listView.stopRefresh(); listView.stopLoadMore(); listView.setRefreshTime(""+date); } } //适配器
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 com.bwie.asus.mnweek2.R; import com.bwie.asus.mnweek2.bean.JsonBean; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; public class LAdapter extends BaseAdapter { private Context context; private ArrayList<JsonBean.DataBean> list; private int ONE=0; private int TWO=1; public LAdapter(Context context, ArrayList<JsonBean.DataBean> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public int getViewTypeCount() { return 2; } //奇偶判断 @Override public int getItemViewType(int position) { if (position%2==0){ return ONE; } return TWO; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder1 holder1=null; ViewHolder2 holder2=null; //判断条目奇偶 if (getItemViewType(position)==ONE){ if (convertView==null){ convertView = View.inflate(context, R.layout.list_one, null); holder1=new ViewHolder1(); holder1.name1=convertView.findViewById(R.id.name1); holder1.neirong1=convertView.findViewById(R.id.neirong1); holder1.image1=convertView.findViewById(R.id.image1); convertView.setTag(holder1); }else { holder1 = (ViewHolder1) convertView.getTag(); } holder1.name1.setText(list.get(position).getCategory()+" "+list.get(position).getAuthor_name()); holder1.neirong1.setText(list.get(position).getTitle()); //图片处理 DisplayImageOptions options=new DisplayImageOptions.Builder().cacheOnDisk(true).bitmapConfig(Bitmap.Config.RGB_565).build(); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder1.image1,options); }else { if (convertView==null){ convertView = View.inflate(context, R.layout.list_two, null); holder2=new ViewHolder2(); holder2.neirong2=convertView.findViewById(R.id.neirong2); holder2.image2_1=convertView.findViewById(R.id.image2_1); holder2.image2_2=convertView.findViewById(R.id.image2_2); holder2.image2_3=convertView.findViewById(R.id.image2_3); convertView.setTag(holder2); }else { holder2 = (ViewHolder2) convertView.getTag(); } holder2.neirong2.setText(list.get(position).getTitle()); //图片处理 DisplayImageOptions options=new DisplayImageOptions.Builder().cacheOnDisk(true).bitmapConfig(Bitmap.Config.RGB_565).build(); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder2.image2_1,options); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder2.image2_2,options); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),holder2.image2_3,options); } return convertView; } class ViewHolder1{ TextView name1,neirong1; ImageView image1; } class ViewHolder2{ TextView neirong2; ImageView image2_1,image2_2,image2_3; } }
//工具类UrlConn
import com.google.common.io.CharStreams; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class UrlConn { private static String string1; public static String getData(String string){ try { URL url=new URL(string); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setConnectTimeout(3000); urlConnection.setReadTimeout(3000); urlConnection.setRequestMethod("GET"); int code = urlConnection.getResponseCode(); if (code==200){ InputStream inputStream = urlConnection.getInputStream(); InputStreamReader streamReader=new InputStreamReader(inputStream,"UTF-8"); string1 = CharStreams.toString(streamReader); string1.toString(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return string1; } }