获取json解析 图片,文字+MyAsyncTask+ImagerLoader

来源:互联网 发布:网络管理培训班 编辑:程序博客网 时间:2024/04/30 13:09
//联网权限<uses-permission android:name="android.permission.INTERNET"></uses-permission>//jsonBean 我已删除get.set方法,减少代码量public class JsonBean {    /**     * code : 200     * msg : success     * newslist :
     */    private int code;    private String msg;    private List<NewslistBean> newslist;    public static class NewslistBean {        /**         * ctime : 2017-09-04         * description : 娱乐圈那点事         * picUrl : https://zxpic.gtimg.com/infonew/0/wechat_pics_-28232099.static/640         * title : 林志玲休息室被拍画面“辣眼睛”,这才是她嫁不出去的原因吧!         * url :          */        private String ctime;        private String description;        private String picUrl;        private String title;        private String url;          }}

//activity.xml

<Button        android:id="@+id/but1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="HttpClient请求"/>    <ListView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/lv1"></ListView>

//item  listview中每一份


    <ImageView        android:id="@+id/iv3"        android:layout_width="100dp"        android:layout_height="100dp"/>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="100dp"        android:orientation="vertical">        <TextView            android:layout_marginTop="20dp"            android:id="@+id/tv1"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="748654651548948641515"/>        <TextView            android:layout_marginTop="20dp"            android:id="@+id/tv2"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="748654651548641515"/>    </LinearLayout>

//MyAppliction.java  解图片

在 AndroidManifest.xml        中的           <application          后加       android:name=".MyAppliction"

public class MyAppliction extends Application{    @Override    public void onCreate() {        super.onCreate();        ImageLoaderConfiguration buildsw = new ImageLoaderConfiguration.Builder(MyAppliction.this).build();        ImageLoader.getInstance().init(buildsw);    }}

MainActivity.java  

import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import com.google.gson.Gson;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.List;public class MainActivity extends AppCompatActivity {    String path="https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10";    private Button but1;    private Button but2;    private ListView lv1;    //private Bitmap bitmap;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        but1 = (Button) findViewById(R.id.but1);              lv1 = (ListView) findViewById(R.id.lv1);        but1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                new MyAsyncTask().execute(path);            }        });    }    class MyAsyncTask extends AsyncTask<String,Void,String> {        @Override        protected void onPreExecute() {            super.onPreExecute();        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            // 导包gson           Gson gson = new Gson();             JsonBean jsonBean = gson.fromJson(s, JsonBean.class);            final List<JsonBean.NewslistBean> newslist = jsonBean.getNewslist();            lv1.setAdapter(new BaseAdapter() {                @Override                public int getCount() {                    return newslist.size();                }                @Override                public Object getItem(int position) {                    return newslist.get(position);                }                @Override                public long getItemId(int position) {                    return position;                }                @Override                public View getView(int position, View convertView, ViewGroup parent) {                    ViewHand viewHand;                    if (convertView==null){                        viewHand = new ViewHand();                        convertView=View.inflate(MainActivity.this,R.layout.item1,null);                        viewHand.tv1= (TextView) convertView.findViewById(R.id.tv1);                        viewHand.tv2= (TextView) convertView.findViewById(R.id.tv2);                        viewHand.iv = (ImageView) convertView.findViewById(R.id.iv3);                        convertView.setTag(viewHand);                    }else {                        viewHand= (ViewHand) convertView.getTag();                    }                    viewHand.tv1.setText(newslist.get(position).getTitle());                    viewHand.tv2.setText(newslist.get(position).getCtime());                   //导包ImageLoader                   ImageLoader.getInstance().displayImage(newslist.get(position).getPicUrl(),viewHand.iv);                    return convertView;                }                class ViewHand{                    TextView tv1;                    TextView tv2;                    ImageView iv;                }            });        }        @Override        protected void onProgressUpdate(Void... values) {            super.onProgressUpdate(values);        }        @Override        protected String doInBackground(String... params) {            ByteArrayOutputStream outputStream;            try {                URL url = new URL(params[0]);                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();                urlConnection.setRequestMethod("GET");                urlConnection.setConnectTimeout(5000);                int responseCode = urlConnection.getResponseCode();                outputStream = new ByteArrayOutputStream();                if (responseCode==200){                    InputStream inputStream = urlConnection.getInputStream();                    byte[] bytes = new byte[1024];                    int i;                    while ((i=inputStream.read(bytes))!=-1){                        outputStream.write(bytes,0,i);                    }                    return outputStream.toString();                }            } catch (Exception e) {                e.printStackTrace();            }            return null;                    }    }   }