請求方式+imageloaderl

   主界面xml

<?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"

>

    <LinearLayout

              android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:text="HttpClient請求"
            android:onClick="httpClient"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />
        <Button
            android:text="UrlConnection請求"
            android:onClick="httpConnection"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />
        
        
        
    </LinearLayout>
                <ListView
                      android:id="@+id/list_view"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"></ListView>



</LinearLayout>

  mainactivity界面

 package com.example.zhouakao1;

 import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 import android.widget.ListView;

import com.google.gson.Gson;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ssl.AllowAllHostnameVerifier;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

 public class MainActivity extends AppCompatActivity {
     private MyAdapter myAdapter;

    private ListView listView;
      private List<DataDataBean.NewslistBean> list=new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView) findViewById(R.id.list_view);

    }
    public void httpClient(View view){
     list.clear();
        setAdapter();
   MyTask myTask=new MyTask();
   myTask.execute("httpClient");

    }

    public void httpConnection(View view){
        list.clear();
        setAdapter();
        MyTask myTask=new MyTask();
        myTask.execute("httpConnection");


    }
       class MyTask extends AsyncTask<String,Void,String>{

           @Override
           protected String doInBackground(String... strings) {
               if ("httpClient".equals(strings[0])) {

                   try {
                       SSLSocketFactory.getSocketFactory().setHostnameVerifier(new AllowAllHostnameVerifier());
                       HttpClient client = new DefaultHttpClient();
                       String path = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10";
                       HttpGet httpGet = new HttpGet(path);
                       HttpResponse response=client.execute(httpGet);
                       int statusCode = response.getStatusLine().getStatusCode();

                       if (statusCode==200){
                           InputStream inputStream=response.getEntity().getContent();
                           String json=streamToString(inputStream,"utf_8");
                           return json;

                       }


                   } catch (IOException e) {
                       e.printStackTrace();
                   }
               }else if ("httpConnection".equals(strings[0])){
                   String path = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10";
                   try {
                       URL url=new URL(path);
                       HttpURLConnection connection=(HttpURLConnection)url.openConnection();
                          connection.setRequestMethod("GET");
                            connection.setReadTimeout(5000);
                           connection.setConnectTimeout(5000);
                       int responseCode = connection.getResponseCode();
                       if (responseCode==200){
                           InputStream inputStream=connection.getInputStream();
                             String json=streamToString(inputStream,"utf_8");
                           return json;
                       }

                   } catch (Exception e) {
                       e.printStackTrace();
                   }
               }

               return null;
           }

           @Override
           protected void onPostExecute(String s) {
               Gson gson=new Gson();
                DataDataBean dataDataBean=gson.fromJson(s,DataDataBean.class);
                      if (dataDataBean!=null){
                          list.addAll(dataDataBean.getNewslist());
                          setAdapter();
                      }

           }
       }
     private void setAdapter(){
        if (myAdapter==null){
        myAdapter =new MyAdapter(MainActivity.this,list);
  listView.setAdapter(myAdapter);
        }else{
            myAdapter.notifyDataSetChanged();
        }

     }

     private String streamToString(InputStream inputStream,String charset) {

         //轉成字符流
         try {
             InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset);

             //轉成緩衝流
             BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

             //讀取
             String s = null;
             StringBuilder builder = new StringBuilder();

             while ((s = bufferedReader.readLine()) != null){
                 builder.append(s);
             }

             bufferedReader.close();

             return builder.toString();

         } catch (Exception e) {
             e.printStackTrace();
         }

         return null;

     }

}
   databean界面
package com.example.zhouakao1;

import java.util.List;

/**
 * Created by bawei on 2017/10/5.
 */

public class DataDataBean {

    /**
     * code : 200
     * msg : success
     * newslist : [{"ctime":"2017-10-05","title":"不要這樣給寶寶喝奶,營養全都沒了,很多媽媽到現在還不懂!","description":"新生兒護理","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-51513144.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=407&timestamp=1507168829&signature=K4hA3pLsD85k7IbnF1vrszICeu2*f*ewc59YXBM8PoxXjGYOK-DnLozKq2L9QOlKuCpBQWVHtbYG2RmsE4S6E8a1TmuKGghdnm9RiYSAiJ4="},{"ctime":"2017-10-05","title":"這是一篇年度點擊率最高的文章(說得太精闢了)","description":"農合論談","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-51519556.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=407&timestamp=1507168829&signature=JrN1klxRg6kfRVoKYQwpOMksSOBsVl5hYp5o-Iqm1j4qg3J9yEkKoacq5B13VSwYE*9gMMCMwp7KSxOUJQT42TdaeDKtLj0ekxBEilEW6jM="},{"ctime":"2017-10-05","title":"精神層次越高的人越善良","description":"品讀時刻","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-51237757.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=407&timestamp=1507168829&signature=tzKGr86gOELC*cyeS3OeZX7TjUXbEpxwcIPZC2PNXhlxaEmpFa6hYM9zRTklUx-y65kXuWqDG-SHdWYu1Dg*kd0Q6MQL3yDOmFhWebhGI*U="},{"ctime":"2017-10-05","title":"瀟瀟暮雨,洗清秋","description":"品讀時刻","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-51519867.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=407&timestamp=1507168828&signature=urHOL0-aN5sZQ5oPRB9ReOWhSOPLjqh5*YaS*ryWnPC6jkECPuwN6bn7RUD627E3mG3BEoMPHJ8M93kb49Z5QQwHoDzlo4ohWAPf1sUPD90="},{"ctime":"2017-10-05","title":"微笑向暖,幸福花開","description":"品讀時刻","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-51519896.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=407&timestamp=1507168828&signature=QxiHA3tzz42iDcb-8jDk4ix1Jhri7fRl-xXYsIpilan-JCC8zcWtwu0gGQoIaq-Ibv7h0iFv0yUCv6bQad3cQltndy*SIK3-wrh5MNB3PaE="},{"ctime":"2017-10-05","title":"最快樂的活法","description":"品讀時刻","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-50564128.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=408&timestamp=1507168828&signature=*2Ksge32tkN*zCKjlRFauWXw1gs4pAaW3CdfPO67OkeRoWguQO4nIwroN3uG-06X72*mpP7UOHHQtZ8DGUKhWnNvf5ySwqqyFHQ*rJbNAHI="},{"ctime":"2017-10-05","title":"莊子:煩惱天天有,不撿自然無","description":"楊站長之家","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-28911349.static/640","url":"https://mp.weixin.qq.com/s?src=16&ver=408&timestamp=1507168827&signature=zzRid8ZRDCh04NGKEF2cs5sn5pvX9nYM2cysJXF0k3G2AWfhXvYmANo*U-1ABrJLbKry5J-C22WMoin4*cZfZFO5Xf*ZgXXrAwhtHFvDg4E="},{"ctime":"2017-10-05","title":"25個趣味定律(非常實用,一定好好看看)","description":"益學堂","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-22379196.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=408&timestamp=1507168827&signature=pKJAEwrKpUBc8BdN8rIUnAF*CYSrsQVe3buGmrA3rE5S9LeYvC5Yb7Tur0ijAXAtRAbxZSJQTA0W*X318xUnqFFp7NylyNcbswRyKXTfdsY="},{"ctime":"2017-10-05","title":"人生,沒有過不去的坎","description":"伴禪入夢","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-51517089.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=407&timestamp=1507168827&signature=kVREOdDIXaJuSERFrRt-fGrsd*EYR2Z3HzEMTxjmGsIzkYZ2CTVqcGkV-EjDrlqd7DRVWzz9blNJjRg0q-xgt7ngqOw0KAxAiJGwN4siebY="},{"ctime":"2017-10-05","title":"一句話,讓你一生不生氣!(長期有效)","description":"品茶時刻","picUrl":"https://zxpic.gtimg.com/infonew/0/wechat_pics_-50315856.jpg/640","url":"https://mp.weixin.qq.com/s?src=16&ver=407&timestamp=1507168826&signature=TWtneWbEGG0jwBQbWwMoeZWdD7fifqPYbYgwW7wOk6bqNaKw6diN0e5u56B5v85Duzp6T8le5bRfOZ*KXmjzpsHsEJDZfT2HQ8GVucuiJZE="}]
     */

    private int code;
    private String msg;
    private List<NewslistBean> newslist;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public List<NewslistBean> getNewslist() {
        return newslist;
    }

    public void setNewslist(List<NewslistBean> newslist) {
        this.newslist = newslist;
    }

    public static class NewslistBean {
        /**
         * ctime : 2017-10-05
         * title : 不要這樣給寶寶喝奶,營養全都沒了,很多媽媽到現在還不懂!
         * description : 新生兒護理
         * picUrl : https://zxpic.gtimg.com/infonew/0/wechat_pics_-51513144.jpg/640
         * url : https://mp.weixin.qq.com/s?src=16&ver=407&timestamp=1507168829&signature=K4hA3pLsD85k7IbnF1vrszICeu2*f*ewc59YXBM8PoxXjGYOK-DnLozKq2L9QOlKuCpBQWVHtbYG2RmsE4S6E8a1TmuKGghdnm9RiYSAiJ4=
         */

        private String ctime;
        private String title;
        private String description;
        private String picUrl;
        private String url;

        public String getCtime() {
            return ctime;
        }

        public void setCtime(String ctime) {
            this.ctime = ctime;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }

        public String getPicUrl() {
            return picUrl;
        }

        public void setPicUrl(String picUrl) {
            this.picUrl = picUrl;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }
    }
}
imageutil

 
public class ImageLoaderUtil {

    public static void init(Context context) {
        File cacheDir = StorageUtils.getCacheDirectory(context);  //緩存文件夾路徑
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)


                .threadPoolSize(3) // default  線程池內加載的數量
                .threadPriority(Thread.NORM_PRIORITY - 2) // default 設置當前線程的優先級
                .tasksProcessingOrder(QueueProcessingType.FIFO) // default
                .denyCacheImageMultipleSizesInMemory()
                .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通過自己的內存緩存實現
                .memoryCacheSize(2 * 1024 * 1024)  // 內存緩存的最大值
                .memoryCacheSizePercentage(13) // default
                .diskCache(new UnlimitedDiskCache(cacheDir)) // default 可以自定義緩存路徑
                .diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)緩存的最大值
                .diskCacheFileCount(100)  // 可以緩存的文件數量
                // default爲使用HASHCODE對UIL進行加密命名, 還可以用MD5(new Md5FileNameGenerator())加密
                .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
                .imageDownloader(new BaseImageDownloader(context)) // default
                .imageDecoder(new BaseImageDecoder(true)) // default
                .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
                .writeDebugLogs() // 打印debug log
                .build(); //開始構建


        ImageLoader.getInstance().init(config);

    }
    public static DisplayImageOptions getDefaultOption() {
        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.mipmap.ic_launcher) // 設置圖片下載期間顯示的圖片
                .showImageForEmptyUri(R.mipmap.ic_launcher) // 設置圖片Uri爲空或是錯誤的時候顯示的圖片
                .showImageOnFail(R.mipmap.ic_launcher) // 設置圖片加載或解碼過程中發生錯誤顯示的圖片
                .resetViewBeforeLoading(true)  // default 設置圖片在加載前是否重置、復位
                .delayBeforeLoading(1000)  // 下載前的延遲時間
                .cacheInMemory(true) // default  設置下載的圖片是否緩存在內存中
                .cacheOnDisk(true) // default  設置下載的圖片是否緩存在SD卡中


                .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 設置圖片以如何的編碼方式顯示
                .bitmapConfig(Bitmap.Config.RGB_565) // default 設置圖片的解碼類型


                .displayer(new SimpleBitmapDisplayer()) // default  還可以設置圓角圖片new RoundedBitmapDisplayer(20)


                .build();


        return options;
    }
}
baseAppction
public class BaseApplication extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderUtil.init(this);
    }
}
適配器
package com.example.zhouakao1;

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.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

/**
 * Created by bawei on 2017/10/5.
 */

public class MyAdapter extends BaseAdapter {
    Context context;
    List<DataDataBean.NewslistBean> list;

    public MyAdapter(Context context, List<DataDataBean.NewslistBean> list) {
        this.context=context;
        this.list=list;
    }

    @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 View getView(int i, View view, ViewGroup viewGroup) {
          ViewHolder holder;
        if (view==null){
                     view= View.inflate(context,R.layout.item_layout,null);
                     holder=new ViewHolder();
            holder.textView=(TextView)view.findViewById(R.id.text_view);
             holder.imageView=(ImageView)view.findViewById(R.id.image_view);
                view.setTag(holder);

        }else{
           holder= (ViewHolder) view.getTag();

        }
        holder.textView.setText(list.get(i).getTitle());
        ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(),holder.imageView,ImageLoaderUtil.getDefaultOption());


        return view;
    }
    class ViewHolder {
        TextView textView;
        ImageView imageView;
    }


}
 item_layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:padding="10dp"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <TextView
        android:layout_marginLeft="10dp"
          android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <ImageView
        android:id="@+id/image_view"
        android:layout_width="100dp"
        android:layout_height="100dp" />

</LinearLayout>



發佈了32 篇原創文章 · 獲贊 6 · 訪問量 7695
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章