一,main
package com.bwei.day08_listviewitem; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; import com.google.gson.Gson; import java.util.List; public class MainActivity extends Activity { private String url="http://v.juhe.cn/toutiao/index?type=&key=2f41498b35e69877fc56dc96776e5d1f"; private ListView listview; private static final String TAG = "MainActivity===="; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化页面 initview(); //从网络获取数据 getData(); } private void getData() { //实例化HttpUtil工具类 HttpUtils httpUtils = HttpUtils.getInstance(); httpUtils.get(url); httpUtils.setHttpUtilsListener(new HttpUtils.HttpUtilsListener() { @Override public void getDataSuccess(String json) { Gson gson=new Gson(); Bean bean = gson.fromJson(json, Bean.class); //设置适配器 List<Bean.ResultBean.DataBean> list = bean.getResult().getData(); MyBase base=new MyBase(MainActivity.this,list); listview.setAdapter(base); } @Override public void getDataError(String error) { } }); } private void initview() { listview=findViewById(R.id.listview); } }
二,mybase
package com.bwei.day08_listviewitem; import android.content.Context; import android.text.TextUtils; 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.ImageLoader; import java.util.List; public class MyBase extends BaseAdapter{ private Context context; private List<Bean.ResultBean.DataBean> list; private static final int type_1=0; private static final int type_2=1; public MyBase(Context context, List<Bean.ResultBean.DataBean> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { //1.获取视图类型 int itemViewType = getItemViewType(position); //2. switch (itemViewType){ //类型1,一张图片的 case type_1: ViewHolderType1 viewHolderType1; if(convertView==null){ convertView=View.inflate(context,R.layout.pic1,null); viewHolderType1=new ViewHolderType1(); viewHolderType1.imageView_pic1=convertView.findViewById(R.id.pic_1_imageview); viewHolderType1.textView_pic1=convertView.findViewById(R.id.pic1_textview); convertView.setTag(viewHolderType1); }else{ viewHolderType1= (ViewHolderType1) convertView.getTag(); } //赋值 viewHolderType1.textView_pic1.setText(list.get(position).getTitle()); String thumbnail_pic_s = list.get(position).getThumbnail_pic_s(); //加载图片 ImageLoader.getInstance().displayImage(thumbnail_pic_s,viewHolderType1.imageView_pic1, MyApp.getOptions()); break; //类型2 三张图片的 case type_2: ViewHolderType2 viewHolderType2; if(convertView==null){ convertView=View.inflate(context,R.layout.pic2,null); viewHolderType2=new ViewHolderType2(); viewHolderType2.textView_pic2=convertView.findViewById(R.id.pic2_textview); viewHolderType2.imageView1_pic2=convertView.findViewById(R.id.pic2_image1); viewHolderType2.imageView2_pic2=convertView.findViewById(R.id.pic2_image2); viewHolderType2.imageView3_pic2=convertView.findViewById(R.id.pic2_image3); convertView.setTag(viewHolderType2); }else{ viewHolderType2= (ViewHolderType2) convertView.getTag(); } //赋值 viewHolderType2.textView_pic2.setText(list.get(position).getTitle()); String thumbnail_pic_s1 = 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(); //加载图片 ImageLoader.getInstance().displayImage(thumbnail_pic_s1,viewHolderType2.imageView1_pic2,MyApp.getOptions()); ImageLoader.getInstance().displayImage(thumbnail_pic_s02,viewHolderType2.imageView2_pic2,MyApp.getOptions()); ImageLoader.getInstance().displayImage(thumbnail_pic_s03,viewHolderType2.imageView3_pic2,MyApp.getOptions()); break; } return convertView; } //获取条目视图的类型 @Override public int getItemViewType(int position) { Bean.ResultBean.DataBean dataBean=list.get(position); String thumbnail_pic_s03 = dataBean.getThumbnail_pic_s03(); if(TextUtils.isEmpty(thumbnail_pic_s03)){ return type_1; } return type_2; } //获取视图类型的数量 @Override public int getViewTypeCount() { return 2; } class ViewHolderType1{ ImageView imageView_pic1; TextView textView_pic1; } class ViewHolderType2{ ImageView imageView1_pic2,imageView2_pic2,imageView3_pic2; TextView textView_pic2; } }三,httpUtils
package com.bwei.day08_listviewitem; import android.os.Handler; import android.os.Message; import android.util.Log; import com.google.gson.Gson; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class HttpUtils { private static final String TAG = "HttpUtils==="; private MyHandler myHandler=new MyHandler(); private HttpUtilsListener httpUtilsListener; //单例模式 private static HttpUtils httpUtils=new HttpUtils(); public static HttpUtils getInstance(){ if(httpUtils==null){ httpUtils=new HttpUtils(); } return httpUtils; } //封装get public void get(final String url){ new Thread(){ @Override public void run() { //进行网络请求 try { URL u=new URL(url); HttpURLConnection connection= (HttpURLConnection) u.openConnection(); connection.setConnectTimeout(5000); int code = connection.getResponseCode(); if(code==200){ InputStream inputStream = connection.getInputStream(); String json = input(inputStream); //发送消息 Message message=myHandler.obtainMessage(); message.what=0; message.obj=json; myHandler.sendMessage(message); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }.start(); } //使用Handler 处理线程 class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ //成功 case 0: String json= (String) msg.obj; httpUtilsListener.getDataSuccess(json); break; //失败 case 1: String error= (String) msg.obj; httpUtilsListener.getDataError(error); break; } } } public String input(InputStream inputStream) throws IOException { int len=0; byte[] byt=new byte[1024]; StringBuffer stringBuffer=new StringBuffer(); while ((len=inputStream.read(byt))!=-1){ String s=new String(byt,0,len); stringBuffer.append(s); } return stringBuffer.toString(); } //接口回调 public interface HttpUtilsListener{ void getDataSuccess(String json); void getDataError(String error); } //外部访问的方法 public void setHttpUtilsListener(HttpUtilsListener httpUtilsListener){ this.httpUtilsListener=httpUtilsListener; } }
四,myapp
package com.bwei.day08_listviewitem; import android.app.Application; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Handler; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer; public class MyApp extends Application{ @Override public void onCreate() { super.onCreate(); initImageLoader(); } private void initImageLoader() { //创建默认的ImageLoader 配置参数 ImageLoaderConfiguration configuration=ImageLoaderConfiguration.createDefault(this); ImageLoader.getInstance().init(configuration); } public static DisplayImageOptions getOptions(){ DisplayImageOptions Options= new DisplayImageOptions.Builder() .cacheInMemory(true) // default .cacheOnDisk(true) // default .bitmapConfig(Bitmap.Config.RGB_565) // default .displayer(new SimpleBitmapDisplayer()) // default .displayer(new FadeInBitmapDisplayer(500)) .handler(new Handler()) // default .build(); return Options; } }