Listview多条目的代码

该博客展示了如何在Android中使用ListView显示从API获取的多条目数据。通过创建自定义BaseAdapter,解析JSON数据,并在getView方法中处理不同类型的视图,实现了包含图片和文本的列表项展示。
摘要由CSDN通过智能技术生成
Listview多条目的代码

package com.example.studiowuxianlunbo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.nostra13.universalimageloader.core.ImageLoader;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class HuaActivity extends AppCompatActivity {

    private ListView lv;
    private List<beanbean> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hua);
        lv = (ListView) findViewById(R.id.lv);
        init();

    }
    private void init(){
        new Thread(){
            private ByteArrayOutputStream outputStream;
           String path="https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1";
            // String path="http://ic.snssdk.com/2/article/v25/stream/?category=news_tech&count=20&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1457695555&loc_mode=5&lac=4527&cid=28883&iid=3835029558&device_id=12211880440&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=iToolsAVM&os_api=1";

            @Override
            public void run() {
                super.run();
                try {
                    URL url = new URL(path);
                    HttpURLConnection connection= (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(5000);
                    int code = connection.getResponseCode();
                    if (code==200){
                        InputStream inputStream = connection.getInputStream();
                        outputStream = new ByteArrayOutputStream();
                        byte[]  read=new byte[1024];
                        int len=-1;
                        while((len=inputStream.read(read))!=-1){
                            outputStream.write(read,0,len);
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        list=new ArrayList<beanbean>();
//                        try {
//                            JSONObject jsonObject = new JSONObject(outputStream.toString());
//                            JSONArray data = jsonObject.getJSONArray("data");
//                            for (int x=0; x<data.length();x++){
//                                JSONObject jsonObject1 = data.getJSONObject(x);
//                                String title = jsonObject1.getString("title");
//                                JSONArray image_list = jsonObject1.getJSONArray("image_list");
//                                for (int a=0;a<image_list.length();a++){
//                                    JSONObject jsonObject2 = image_list.getJSONObject(a);
//                                    String url = jsonObject2.getString("url");
//                                    beanbean beanbean = new beanbean();
//                                    beanbean.setUtl(url);
//                                    beanbean.setTitle(title);
//                                    list.add(beanbean);
//                                }
//                            }
//                        } catch (Exception e) {
//                            e.printStackTrace();
//                        }
                        // Toast.makeText(HuaActivity.this,outputStream.toString(),Toast.LENGTH_LONG).show();
                        try {
                            JSONObject jsonObject = new JSONObject(outputStream.toString());
                            JSONArray newlist = jsonObject.getJSONArray("newslist");
                            for (int x=0;x<newlist.length();x++){

                                JSONObject jsonObject1 = newlist.getJSONObject(x);
                                String description = jsonObject1.getString("description");
                                String url = jsonObject1.getString("picUrl");
                                beanbean beanbean = new beanbean();
                                beanbean.setUrl(url);
                                beanbean.setDescription(description);
                                list.add(beanbean);
                                lv.setAdapter(new Myter());
                            // Toast.makeText(HuaActivity.this,beanbean.getDescription()+beanbean.getUrl(),Toast.LENGTH_LONG).show();
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                });
            }
        }.start();
    }
   class Myter extends BaseAdapter{
//
//        private Hander hander;
//
//        @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) {
//            hander = new Hander();
//            for (int a=0;a<list.size();a++){
//                if (list.get(a).getUtl()==null){
//                   convertView= View.inflate(HuaActivity.this,R.layout.t,null);
//                   hander.text= (TextView) convertView.findViewById(R.id.ttext);
//                }else{
//                    convertView= View.inflate(HuaActivity.this,R.layout.item,null);
//                    hander.text= (TextView) convertView.findViewById(R.id.textname);
//                    hander.image= (ImageView) convertView.findViewById(R.id.imagename);
//                }
//                beanbean beanbean = list.get(a);
//                hander.text.setText(beanbean.getTitle());
//                ImageLoader.getInstance().displayImage(beanbean.getUtl(),hander.image);
//            }
//            return convertView;
//        }

        private Hander hander;
        final int TYPE_1 = 0;
        final int TYPE_2 = 1;
        final int TYPE_3 = 2;
       private ImageView image32;
       private ImageView image33;

       @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) {

            int itemViewType = getItemViewType(position);
            if (convertView==null){
                hander=new Hander();
                switch (itemViewType){
                    case TYPE_1:
                        convertView=View.inflate(HuaActivity.this,R.layout.t,null);
                        hander.text= (TextView) convertView.findViewById(R.id.ttext);
                        break;
                    case TYPE_2:
                        convertView=View.inflate(HuaActivity.this,R.layout.item,null);
                        hander.text= (TextView) convertView.findViewById(R.id.textname);
                        hander.image= (ImageView) convertView.findViewById(R.id.imagename);
                        break;
                    case TYPE_3:
                        convertView=View.inflate(HuaActivity.this,R.layout.item2,null);
                        hander.text= (TextView) convertView.findViewById(R.id.text3);
                        hander.image= (ImageView) convertView.findViewById(R.id.image31);
                        image32 = (ImageView) convertView.findViewById(R.id.image32);
                        image33 = (ImageView) convertView.findViewById(R.id.image33);
                        break;
                    default:
                        break;
                }
               convertView.setTag(hander);
          }else{
                hander= (Hander) convertView.getTag();

            }
            beanbean beanbean = list.get(position);

            hander.text.setText(beanbean.getDescription());
            switch (itemViewType){
                case TYPE_1:
                    break;
                case TYPE_2:
                    ImageLoader.getInstance().displayImage(beanbean.getUrl(),hander.image);
                    break;
                case TYPE_3:
                    ImageLoader.getInstance().displayImage(beanbean.getUrl(),hander.image);
                    ImageLoader.getInstance().displayImage(beanbean.getUrl(),image32);
                    ImageLoader.getInstance().displayImage(beanbean.getUrl(),image33);
                    break;
            }
            return convertView;
        }

        @Override
        public int getViewTypeCount() {
            return 10;
        }

        @Override
        public int getItemViewType(int position) {
            int p=position%6;
            if (p==0){
                return TYPE_1;
            }
            else if (p<3){
                return  TYPE_2;
            }
            else if(p<6){
                return  TYPE_3;
            }
            else {
                return TYPE_1;
            }

        }

        class Hander{
            TextView text;
            ImageView image;

        }
//
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值