ListView嵌套GridView数据适配

来源:互联网 发布:哪家券商服务好 知乎 编辑:程序博客网 时间:2024/06/03 15:57
package text.com.yuekaodemo4;


import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;


import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;


import org.w3c.dom.Text;


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


import maqian.baidu.com.xlistviewlibrary.XListView;
import text.com.yuekaodemo4.bean.News;
import text.com.yuekaodemo4.utils.StreamUtils;


public class MainActivity extends AppCompatActivity {


    private XListView xlv;
    private Handler hand;
    private int page=1;
    private MyAdapter adapter;
    private ArrayList<News.DataBean> list=new ArrayList<>();
    private ArrayList<News.DataBean> listd=new ArrayList<>();


    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if(msg.what==0){
                list = (ArrayList<News.DataBean>) msg.obj;
              for(int i=0;i<list.size();i++){
                  listd.add(list.get(i));


              }
               getAdapter();


            }
        }
    };




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        hand= new Handler();
         initViews();




    }


    private void initViews() {
        xlv = (XListView) findViewById(R.id.xlv);
        xlv.setPullRefreshEnable(true);
        xlv.setPullLoadEnable(true);
        xlv.setXListViewListener(new XListView.IXListViewListener() {


            @Override
            public void onRefresh() {


                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        page=1;
                        getDates();
                    }
                }).start();
                hand.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        xlv.stopRefresh();
                    }
                },2000);
            }


            @Override
            public void onLoadMore() {


                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        page++;
                        getDates();
                    }
                }).start();
                hand.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        xlv.stopLoadMore();
                    }
                },2000);
            }
        });
        new Thread(new Runnable() {
            @Override
            public void run() {
                getDates();
            }
        }).start();


    }
//刷新适配器的方法
    private void getAdapter(){
        if(adapter==null){
            adapter = new MyAdapter();
            xlv.setAdapter(adapter);
        }else{
            adapter.notifyDataSetChanged();
        }
    }


    private void getDates(){
    String jsonUrl="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="+page;
    //进行数据的解析
        try {
            URL url=new URL(jsonUrl);
            HttpURLConnection conn= (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5000);
            conn.setReadTimeout(5000);
            if(conn.getResponseCode()==200){
                InputStream stream = conn.getInputStream();
                String path = StreamUtils.getPath(stream);
                Gson gson=new Gson();
                News news = gson.fromJson(path, News.class);
             ArrayList<News.DataBean>   list = (ArrayList<News.DataBean>) news.getData();
                Message message = handler.obtainMessage(0, list);
                handler.sendMessage(message);
            }


        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private class MyAdapter extends BaseAdapter{


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


        @Override
        public Object getItem(int position) {
            return listd.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(MainActivity.this,R.layout.list_layout,null);
                 holder=new ViewHolder();
                holder.title= (TextView) convertView.findViewById(R.id.title_list);
                holder.source= (TextView) convertView.findViewById(R.id.source_list);
                holder.gridView= (GridView) convertView.findViewById(R.id.gridView);
              convertView.setTag(holder);
            }else{
                holder= (ViewHolder) convertView.getTag();
            }


            holder.title.setText(listd.get(position).getTitle());
            holder.source.setText(listd.get(position).getSource());
            ArrayList<News.DataBean.ImageListBean> image_list = (ArrayList<News.DataBean.ImageListBean>) listd.get(position).getImage_list();
           // holder.gridView.setNumColumns(image_list.size());
            holder.gridView.setAdapter(new MyAdapterGrid((ArrayList<News.DataBean.ImageListBean>) listd.get(position).getImage_list()));
            return convertView;
        }
    }
    class ViewHolder{
        TextView title;
        TextView source;
        GridView gridView;




    }
    private class MyAdapterGrid extends BaseAdapter{
        private ArrayList<News.DataBean.ImageListBean> lista;
        public MyAdapterGrid(ArrayList<News.DataBean.ImageListBean> list) {
            this.lista=list;
        }


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


        @Override
        public Object getItem(int position) {
            return lista.get(position);
        }


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


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder1 holder1=null;
            if(convertView==null){
                convertView=View.inflate(MainActivity.this,R.layout.grid_layout,null);
                holder1=new ViewHolder1();
                holder1.im= (ImageView) convertView.findViewById(R.id.grid_im);
                convertView.setTag(holder1);
            }else {
                holder1= (ViewHolder1) convertView.getTag();
            }
            Log.i("===>",lista.get(position).getUrl());
            //设置图片的宽高不然图片不出来
              ImageLoader.getInstance().displayImage(lista.get(position).getUrl(),holder1.im);
            return convertView;
        }
    }
    class ViewHolder1{
        ImageView im;
    }


}
0 0