listview多条目加载(网络请求)

1.MainActvty主页

public class MainActivity extends AppCompatActivity {


    private ListView lv;

    String path="http://ic.snssdk.com/2/article/v25/stream/?count=20&min_behot_time=1457659690&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457672153&loc_mode=5&lac=4527&cid=28883&iid=3839760160&device_id=12246291682&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api=19&os_version=4.4.4&uuid=352284045861006&openudid=84c1c7b192991cc6";
    private List<Bean.Data> data;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//        初始化ID
        lv = (ListView) findViewById(R.id.lv);

        indata();
    }

//    异步加载数据加载数据
    private void indata() {

        new AsyncTask<String,Void,String>(){

            private MyAdapter myAdapter;
            private ByteArrayOutputStream outputStream;

            @Override
            protected String doInBackground(String... params) {

                try {
                    URL url = new URL(params[0]);
                    HttpURLConnection connection= (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(3000);
                    int responseCode = connection.getResponseCode();

                    if(responseCode==200){
                        InputStream inputStream = connection.getInputStream();

                        outputStream = new ByteArrayOutputStream();
                        int len;
                        byte[] by=new byte[1024];
                        while ((len=inputStream.read(by))!=-1){
                            outputStream.write(by,0,len);
                        }
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
                return outputStream.toString();
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
               Gson gson= new Gson();
                Bean bean = gson.fromJson(s,Bean.class);

//                ctrl+Alt+v补齐
                data = bean.data;
                myAdapter = new MyAdapter();
                lv.setAdapter(myAdapter);
            }
        }.execute(path);

    }

//    适配器
    class MyAdapter extends BaseAdapter{

//    定义值来代替返回值
        private static final int TYPE1=0;
        private static final int TYPE2=1;
        private TextView tv;
        private ImageView img1;
        private ImageView img2;
        private ImageView img3;

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

//    重写的一个方法
        @Override
        public int getItemViewType(int position) {
            if(data.get(position).has_image){
                return TYPE1;
//                给图片的布局
            }else{
                return TYPE2;
                // 给文字的布局
            }

        }

//    重写的方法(几个布局就返回几)
        @Override
        public int getViewTypeCount() {
            return 2;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

//            得到上面的方法
          int type=getItemViewType(position);

//            判断是0还是1给不同的布局
            switch (type){

                case 0:
                    convertView=View.inflate(MainActivity.this,R.layout.item2,null);
                    img1 = (ImageView) convertView.findViewById(R.id.img1);
                    img2 = (ImageView) convertView.findViewById(R.id.img2);
                    img3 = (ImageView) convertView.findViewById(R.id.img3);
                    break;
                case 1:
                    convertView=View.inflate(MainActivity.this,R.layout.item1,null);
                    tv = (TextView) convertView.findViewById(R.id.tv);

                    break;

            }

//             判断是0还是1给不同的值
            switch (type){
                case 0:
//                      给图片要注意下标越界和空指针
                    ImageLoader.getInstance().displayImage(data.get(position%data.size()).image_list.get(position%3).url_list.get(position%3).url,img1);
                    ImageLoader.getInstance().displayImage(data.get(position%data.size()).image_list.get(position%3).url_list.get(position%3).url,img2);
                    ImageLoader.getInstance().displayImage(data.get(position%data.size()).image_list.get(position%3).url_list.get(position%3).url,img3);
//                  ImageLoader.getInstance().displayImage(list.get(position).image_list.get(position).url_list.get(0).url,img2);
//                    ImageLoader.getInstance().displayImage(list.get(position).image_list.get(position).url_list.get(0).url,img3);
                    break;
                case 1:
                       tv.setText(data.get(position).title);
                    break;

            }

            return convertView;
        }
    }
}


2.main.xml

<ListView
    android:id="@+id/lv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"></ListView>
 
 
 
3.Bean包
 
public class Bean {

//    手动也就是自己封装的要用什么就封装什么
    public List<Data> data;

    public class Data{
        public boolean has_image;
        public String title;
        public List<Img> image_list;

        public class Img{
            public List<UrlBean> url_list;

            public class UrlBean{
                public String url;
            }

        }
    }




}
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值