--------------
MainActivity代码--------------
public class MainActivity extends AppCompatActivity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到控件 listView = findViewById(R.id.listview); MyTask myTask=new MyTask(); myTask.execute("http://v.juhe.cn/toutiao/index?type=top&key=979b10aa8ead50f95e176358595ba0e7"); } class MyTask extends AsyncTask<String,Void,String>{ private String data; @Override protected String doInBackground(String... strings) { try { URL url=new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setConnectTimeout(5000); urlConnection.setRequestMethod("GET"); urlConnection.setReadTimeout(5000); int responseCode = urlConnection.getResponseCode(); if(responseCode==200){ InputStream inputStream = urlConnection.getInputStream(); data = getdata(inputStream); return data; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { //新建gson if(data!=null){ Gson gson=new Gson(); MyGson myGson = gson.fromJson(data, MyGson.class); List<MyGson.ResultBean.DataBean> list = myGson.getResult().getData(); //设置适配器 MyAdapter adapter=new MyAdapter(MainActivity.this,list); listView.setAdapter(adapter); } super.onPostExecute(s); } } private String getdata(InputStream inputStream) { StringBuilder builder=new StringBuilder(); BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream)); //定义变量 String str; //循环读取 try { while((str=reader.readLine())!=null){ builder.append(str); } } catch (Exception e) { e.printStackTrace(); } return builder.toString(); } }
----------自定义MyApplaction类代码---------------
public class MyApplaction extends Application{ @Override public void onCreate() { super.onCreate(); //自定义sd卡缓存目录 File file=new File(Environment.getExternalStorageDirectory()+"/images"); //初始化,,全局配置applction ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this) .memoryCacheExtraOptions(400, 700)//缓存图片最大的长和宽 .threadPoolSize(3)//线程池的数量 .threadPriority(4) .memoryCacheSize(20*1024*1024)//设置内存缓存区大小 .diskCacheSize(80*1024*1024)//设置sd卡缓存区大小 .diskCache(new UnlimitedDiscCache(file))//自定义sd卡缓存目录 .writeDebugLogs()//打印日志内容 .diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理 .build(); ImageLoader.getInstance().init(configuration); } }--------------适配器代码------------
class MyAdapter extends BaseAdapter{ Context context; List<MyGson.ResultBean.DataBean> list; //定义类型 private final int ONE_IMAGE=0; private final int TWO_IMAGE=1; private final int THREE_IMAGE=2; private final DisplayImageOptions options; public MyAdapter(Context context, List<MyGson.ResultBean.DataBean> list) { this.context=context; this.list=list; options = new DisplayImageOptions.Builder() .cacheInMemory(true)//使用内存缓存 .cacheOnDisk(true)//使用磁盘缓存 .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片 .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时 .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式 1px=2字节 .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式 .displayer(new RoundedBitmapDisplayer(100))//设置圆角 30代表半径 自定义 .build(); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public int getItemViewType(int position) { //格局的展示数据的类型进行判断 String image1 = list.get(position).getThumbnail_pic_s();//得到数据中的图片 String image2 = list.get(position).getThumbnail_pic_s02(); String image3 = list.get(position).getThumbnail_pic_s03(); //判断类型 if(image1!=null && image2==null && image3==null){ return ONE_IMAGE; }else if(image1!=null && image2!=null && image3==null){ return TWO_IMAGE; }else{ return THREE_IMAGE; } } @Override public int getViewTypeCount() { return 3; } @Override public View getView(int i, View view, ViewGroup viewGroup) { int type = getItemViewType(i); if(type==ONE_IMAGE){ ViewHolder1 holder1; if(view==null){ view=View.inflate(context,R.layout.item1,null); holder1=new ViewHolder1(); holder1.image01=view.findViewById(R.id.image01); holder1.text01=view.findViewById(R.id.text01); view.setTag(holder1); }else{ holder1= (ViewHolder1) view.getTag(); } holder1.text01.setText(list.get(i).getTitle()); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(),holder1.image01,options); return view; }else if(type==TWO_IMAGE) { ViewHolder2 holder2; if (view == null) { view = View.inflate(context, R.layout.item2, null); holder2 = new ViewHolder2(); holder2.text21=view.findViewById(R.id.text22); holder2.image21 = view.findViewById(R.id.image21); holder2.image22 = view.findViewById(R.id.image22); view.setTag(holder2); } else { holder2 = (ViewHolder2) view.getTag(); } holder2.text21.setText(list.get(i).getTitle()); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s02(), holder2.image22, options); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(), holder2.image21, options); return view; }else{ ViewHolder3 holder3; if (view == null) { view = View.inflate(context, R.layout.item3, null); holder3 = new ViewHolder3(); holder3.text31=view.findViewById(R.id.text33); holder3.image31 = view.findViewById(R.id.image33); holder3.image32 = view.findViewById(R.id.image34); holder3.image33 = view.findViewById(R.id.image35); view.setTag(holder3); } else { holder3 = (ViewHolder3) view.getTag(); } holder3.text31.setText(list.get(i).getTitle()); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(), holder3.image31, options); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s02(), holder3.image32, options); ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s03(), holder3.image33, options); return view; } } private class ViewHolder1{ ImageView image01; TextView text01; } private class ViewHolder2{ ImageView image21; ImageView image22; TextView text21; } private class ViewHolder3{ ImageView image31; ImageView image32; ImageView image33; TextView text31; }}------activity_main布局-------
<ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/listview"></ListView>--------list_layout1布局------<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/text01" android:text="qqqqqqq" /> <ImageView android:layout_marginTop="20dp" android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/image01"/>--------list_layout2布局------
<LinearLayout android:padding="20dp" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/image21" android:padding="10dp"/> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/image22" android:padding="10dp" android:paddingLeft="10dp"/> <TextView android:id="@+id/text22" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/image01" android:layout_marginBottom="38dp" android:layout_marginLeft="81dp" android:layout_marginStart="81dp" android:layout_toEndOf="@+id/image01" android:layout_toRightOf="@+id/image01" android:layout_weight="1" android:text="TextView" /> </LinearLayout>--------list_layout3布局------
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/text33" android:text="aaaaaaa" android:layout_marginLeft="50dp" android:layout_marginTop="20dp" /> <LinearLayout android:padding="50dp" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/image33" android:padding="10dp"/> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/image34" android:padding="10dp"/> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/image35" android:padding="10dp"/> </LinearLayout>--------------清单文件-------------
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.com.imageloader"> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" android:name=".MyApplaction"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>