从网络获取gson数据

来源:互联网 发布:鲜活的数据 下载 编辑:程序博客网 时间:2024/05/21 00:00


import com.nostra13.universalimageloader.core.ImageLoader;


import java.util.ArrayList;
import java.util.List;


/**
 * Created by mamiaomiao on 17/8/10.
 */


public class MyAdapter extends BaseAdapter {
    private List<DataBean.ResultBean> list = new ArrayList<DataBean.ResultBean>();
    private Context context;
    private ImageLoader loader;


    public MyAdapter(Context context, List<DataBean.ResultBean> list) {
        this.context = context;
        this.list = list;
        loader=ImageLoader.getInstance();


    }


    @Override
    public int getCount() {
        return list.size();
    }


    @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) {
        ViewHolder holder=null;
        if (convertView == null) {
            convertView = View.inflate(context, R.layout.item, null);
            holder=new ViewHolder(convertView);
            convertView.setTag(holder);
        }else {
            holder=(ViewHolder)convertView.getTag();
        }
        DataBean.ResultBean resultBean=list.get(position);
        //设置图片
        loader.displayImage(resultBean.IMAGEURL,holder.item_img);
        //设置文本
        holder.item_name.setText(resultBean.FROMNAME);
        holder.item_title.setText(resultBean.TITLE);
        holder.item_time.setText(resultBean.SHOWTIME);
        return convertView;
    }


    public static class ViewHolder {
        public View rootView;
        public ImageView item_img;
        public TextView item_title;
        public TextView item_name;
        public TextView item_time;


        public ViewHolder(View rootView) {
            this.rootView = rootView;
            this.item_img = (ImageView) rootView.findViewById(R.id.item_img);
            this.item_title = (TextView) rootView.findViewById(R.id.item_title);
            this.item_name = (TextView) rootView.findViewById(R.id.item_name);
            this.item_time = (TextView) rootView.findViewById(R.id.item_time);
        }


    }

}

--------------------------------------------------------------------



public class DetailActivity extends Activity {
    private ImageView detail_img;
    private TextView detail_title;
    private TextView detail_subtitle;
    private TextView detail_name;
    private TextView detail_time;


    @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        setContentView(R.layout.detail_layout);
        initView();
        Intent intent=getIntent();
//        intent.putExtra("img",bean.IMAGEURL);
//        intent.putExtra("title",bean.TITLE);
//        intent.putExtra("subtitle",bean.SUBTITLE);
//        intent.putExtra("time",bean.SHOWTIME);
//        intent.putExtra("name",bean.FROMNAME);
        String url=intent.getStringExtra("img");
        String title=intent.getStringExtra("title");
        String subtitle=intent.getStringExtra("subtitle");
        String time=intent.getStringExtra("time");
        String name=intent.getStringExtra("name");
        ImageLoader.getInstance().displayImage(url,detail_img);
        detail_name.setText(name);
        detail_title.setText(title);
        detail_subtitle.setText(subtitle);
        detail_time.setText(time);
    }


    private void initView() {
        detail_img = (ImageView) findViewById(R.id.detail_img);
        detail_title = (TextView) findViewById(R.id.detail_title);
        detail_subtitle = (TextView) findViewById(R.id.detail_subtitle);
        detail_name = (TextView) findViewById(R.id.detail_name);
        detail_time = (TextView) findViewById(R.id.detail_time);
    }
}

-------------------------------------------------



public class MainActivity extends AppCompatActivity {


    private ListView mylist;
    private RelativeLayout activity_main;
    List<DataBean.ResultBean> list;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //设置初始化;
        ImageLoaderConfiguration configuration=ImageLoaderConfiguration.createDefault(MainActivity.this);
        ImageLoader.getInstance().init(configuration);
        initView();
        String url = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0";
        MyTask task = new MyTask();
        task.execute(url); 
        mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Intent intent=new Intent(MainActivity.this,DetailActivity.class);
        DataBean.ResultBean bean=list.get(position);//(DataBean.ResultBean)parent.getAdapter().getItem(position);
        intent.putExtra("img",bean.IMAGEURL);
        intent.putExtra("title",bean.TITLE);
        intent.putExtra("subtitle",bean.SUBTITLE);
        intent.putExtra("time",bean.SHOWTIME);
        intent.putExtra("name",bean.FROMNAME);
        startActivity(intent);
    }
});
    }


    class MyTask extends AsyncTask<String, Integer, String> {
        @Override
        protected String doInBackground(String... params) {
            //从网络获取数据
            try {
                URL url = new URL(params[0]);
                System.out.println(params[0]+" llllllllll");
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                int code = connection.getResponseCode();
                if (code == 200) {
                    InputStream inputStream = connection.getInputStream();
                    String str;
                    StringBuilder builder = new StringBuilder();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                    while ((str = reader.readLine()) != null) {
                        builder.append(str);
                    }
                    return builder.toString();
                }




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


        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //获取请求的数据
            if (s != null) {
                Gson gson = new Gson();
                DataBean bean = gson.fromJson(s, DataBean.class);
                if (bean != null) {
                  list  = bean.data;
                    if(list!=null){
                    MyAdapter adapter=new MyAdapter(MainActivity.this,list);
                    mylist.setAdapter(adapter);}


                }
            }
        }
    }


    private void initView() {
        mylist = (ListView) findViewById(R.id.mylist);
        activity_main = (RelativeLayout) findViewById(R.id.activity_main);
    }
}

--------------------------------------

public class DataBean {
    public String result;
    public List<ResultBean> data;
    class ResultBean{
//        "TITLE": "程开甲:忠诚奉献的“两弹一星”元勋",
//                "SUBTITLE": "九三学社社员、“八一勋章”获得者程开甲今年已经99岁高龄,作为我国著名理论物理学",
//                "IMAGEURL": null,
//                "FROMNAME": "央视网",
//                "SHOWTIME": "2017-08-07",
        public String TITLE,SUBTITLE,IMAGEURL,FROMNAME,SHOWTIME;
    }
}

-------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
<ImageView
    android:id="@+id/detail_img"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:src="@mipmap/ic_launcher"
    android:scaleType="fitXY"
    />
    <TextView
        android:id="@+id/detail_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        />
    <TextView
        android:id="@+id/detail_subtitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        />
    <TextView
        android:id="@+id/detail_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        />
    <TextView
        android:id="@+id/detail_time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        />
</LinearLayout>