<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
implementation 'com.google.code.gson:gson:2.8.5' compile project (':imageloaderlibrary')
App
ImageLoaderConfiguration configuration1 = ImageLoaderUtils.getConfiguration(this); ImageLoader.getInstance().init(configuration1);
//MIactivity
package com.bwei.duotiaomu; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import com.bwei.adpter.MyAdapter; import com.bwei.bean.NewsBean; import com.bwei.http.HttpUrlConnect; import com.google.gson.Gson; import java.net.HttpURLConnection; import java.util.ArrayList; import java.util.List; import view.XListView; public class MainActivity extends AppCompatActivity { private List<NewsBean.DataBean> list = new ArrayList<NewsBean.DataBean>(); private XListView xlist_view; private int page=1; private HttpUrlConnect httpUrlConnect = HttpUrlConnect.getInstance(); private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); getDataFromNetWork(); } private void initView() { xlist_view =findViewById(R.id.xlist_view); //可以加载 可以刷新 xlist_view.setPullRefreshEnable(true); xlist_view.setPullLoadEnable(true); //设置监听 xlist_view.setXListViewListener(new XListView.IXListViewListener() { @Override public void onRefresh() { page=1; getDataFromNetWork(); } @Override public void onLoadMore() { page+=1; getDataFromNetWork(); } }); adapter = new MyAdapter(MainActivity.this,list); xlist_view.setAdapter(adapter); } private void getDataFromNetWork() { //把page传到网络请求中与uri像结合 httpUrlConnect.getdata(page); //接口回调 httpUrlConnect.setHttpListenter(new HttpUrlConnect.HttpListenter() { @Override public void getJsonData(String json) { Gson gson = new Gson(); NewsBean newsBean = gson.fromJson(json, NewsBean.class); List<NewsBean.DataBean> data = newsBean.getData(); if (page==1){ list.clear(); } list.addAll(data); adapter.notifyDataSetChanged(); if (page==1){ xlist_view.stopRefresh(); }else{ xlist_view.stopLoadMore(); } } }); } }
/***********************************************************/
HttpUrlConnect
package com.bwei.http; import android.app.Application; import android.os.AsyncTask; import android.provider.Settings; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; /** * Created by Jack Lee on 2018/7/13. */ public class HttpUrlConnect{ private static HttpListenter httpListenter; private static HttpUrlConnect httpUrlConnect; private String path="http://www.xieast.com/api/news/news.php?page="; private int index; public static HttpUrlConnect getInstance(){ if (httpUrlConnect==null){ httpUrlConnect = new HttpUrlConnect(); } return httpUrlConnect; } public void getdata(int page) { index = page; //创建异步 Myasynctack asynctack = new Myasynctack(); asynctack.execute(); } private class Myasynctack extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { try { //封装网络地址 URL url = new URL(path+index); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //设置请求方式 connection.setRequestMethod("GET"); //判断状态码 if (connection.getResponseCode()==200){ //从服务器得到输入流 InputStream inputStream = connection.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"utf-8"); BufferedReader reader = new BufferedReader(inputStreamReader); StringBuilder builder = new StringBuilder(); String str = ""; while ((str=reader.readLine())!=null){ builder.append(str); } inputStreamReader.close(); reader.close(); return builder.toString(); } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); httpListenter.getJsonData(s); } } //定义一个借口 public interface HttpListenter{ public void getJsonData(String json); } public static void setHttpListenter(HttpListenter httpListenter) { HttpUrlConnect.httpListenter = httpListenter; } }
/******************************/
adapter
package com.bwei.adpter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.bwei.bean.NewsBean; import com.bwei.duotiaomu.R; import com.bwei.imageloaderlibrary.utils.ImageLoaderUtils; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; /** * Created by Jack Lee on 2018/7/13. */ public class MyAdapter extends BaseAdapter{ private Context context; private List<NewsBean.DataBean> list ; private final int ONE_ITEM=0; private final int TWO_ITEM=1; public MyAdapter(Context context, List<NewsBean.DataBean> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { String Thumbnail_pic_s = list.get(position).getThumbnail_pic_s(); String Thumbnail_pic_s02 = list.get(position).getThumbnail_pic_s02(); String Thumbnail_pic_s03 = list.get(position).getThumbnail_pic_s03(); if (Thumbnail_pic_s!=null&&Thumbnail_pic_s02==null&&Thumbnail_pic_s03==null){ return ONE_ITEM; }else if (Thumbnail_pic_s!=null&&Thumbnail_pic_s02!=null&&Thumbnail_pic_s03!=null){ return TWO_ITEM; }else{ return ONE_ITEM; } } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { int itemViewType = getItemViewType(position); if (itemViewType==ONE_ITEM){ OneViewHolder oneViewHolder = null; if (convertView==null){ oneViewHolder = new OneViewHolder(); convertView = View.inflate(context, R.layout.layout_item, null); oneViewHolder.text_view = convertView.findViewById(R.id.text_view); oneViewHolder.thumbnail_pic_s = convertView.findViewById(R.id.thumbnail_pic_s); convertView.setTag(oneViewHolder); }else{ oneViewHolder = (OneViewHolder) convertView.getTag(); } oneViewHolder.text_view.setText(list.get(position).getTitle()); DisplayImageOptions options = ImageLoaderUtils.getOptions(); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),oneViewHolder.thumbnail_pic_s,options); }else{ TWOViewHolder twoViewHolder = null; if (convertView==null){ twoViewHolder = new TWOViewHolder(); convertView = View.inflate(context, R.layout.layout_item02, null); twoViewHolder.title1 = convertView.findViewById(R.id.title1); twoViewHolder.thumbnail_pic_s01 = convertView.findViewById(R.id.thumbnail_pic_s01); twoViewHolder.thumbnail_pic_s02 = convertView.findViewById(R.id.thumbnail_pic_s02); twoViewHolder.thumbnail_pic_s03 = convertView.findViewById(R.id.thumbnail_pic_s03); convertView.setTag(twoViewHolder); }else{ twoViewHolder = (TWOViewHolder) convertView.getTag(); } twoViewHolder.title1.setText(list.get(position).getTitle()); DisplayImageOptions options = ImageLoaderUtils.getOptions(); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),twoViewHolder.thumbnail_pic_s01); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),twoViewHolder.thumbnail_pic_s02); ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),twoViewHolder.thumbnail_pic_s03); } return convertView; } private class OneViewHolder{ TextView text_view; ImageView thumbnail_pic_s; } private class TWOViewHolder{ TextView title1; ImageView thumbnail_pic_s01; ImageView thumbnail_pic_s02; ImageView thumbnail_pic_s03; } }