二级列表ExpendableListView实现从网络上获取数据

来源:互联网 发布:正方软件叶青松 编辑:程序博客网 时间:2024/05/02 08:48

二级列表ExpendableListView实例

效果如下图所示:

这里写图片描述

获取数据地址:url:http://www.handybest.com/index.php?m=Wx&c=Index&a=get_topic_info&id=34&view=
(个人使用 禁止商业使用)

1.首先创建二级列表的JavaBean类 ;

2.访问网址请求数据,使用Gson解析json串,代码如下:

package com.example.aa;import android.util.Log;import com.google.gson.Gson;import com.google.gson.JsonSyntaxException;import java.io.BufferedInputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.Scanner;public class ExUtils {    private static final String TAG_GET = "exutils--->";    public static String connectGet() {        HttpURLConnection urlConnection = null;        try {            URL url = new URL("http://www.handybest.com/index.php?m=Wx&c=Index&a=get_topic_info&id=34&view=");            urlConnection = (HttpURLConnection) url.openConnection();            InputStream in = new BufferedInputStream(urlConnection.getInputStream());            // 判断请求是否成功            if (urlConnection.getResponseCode() == 200) {//                // 获取返回的数据//                byte[] data = readStream(urlConnection.getInputStream());//                Log.i(TAG_GET, "Get方式请求成功,返回数据如下:");//                Log.i(TAG_GET, new String(data, "UTF-8"));//                return new String(data, "UTF-8");                return readInStreams(in);            } else {                Log.i(TAG_GET, "Get方式请求失败");            }        } catch (Exception e) {            e.printStackTrace();        } finally {            urlConnection.disconnect();        }        return null;    }    private static String readInStreams(InputStream in) {        Scanner scanner = new Scanner(in).useDelimiter("\\A");        return scanner.hasNext() ? scanner.next() : "";    }    /***     * Gson 解析数据     */    public static LcBean gsonData() {        LcBean lcBean = null;        try {            String strContent = connectGet();            Gson gson = new Gson();            lcBean = gson.fromJson(strContent, LcBean.class);            return lcBean;        } catch (JsonSyntaxException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return null;    }}

3.最重要的功能块出现,实现一级列表,二级列表数据的添加:

1)为一级列表添加数据方法:

 public List<DetailsBean>   detailsList= ExUtils.gsonData().getData().getDetails();          public ArrayList<String> getGeneralsTypes(){              ArrayList<String> generalsTypes=new ArrayList<String>();              for(int i=0;i<detailsList.size();i++){                generalsTypes.add(detailsList.get(i).getTag_title());            }            return generalsTypes;          }          private ArrayList<String> generalsTypes=getGeneralsTypes();

2)为二级列表添加数据

public ArrayList<ArrayList<DetailsBean.PictBean>> getGenerals(){             // Objects[][] objectsesGener=new Objects[detailsList.size()][];              ArrayList<ArrayList<DetailsBean.PictBean>> generalss = new  ArrayList<ArrayList<DetailsBean.PictBean>>();              for (int i=0;i<detailsList.size();i++){                  DetailsBean detailsBean = detailsList.get(i);                  List<DetailsBean.PictBean> pict = detailsBean.getPict();                  ArrayList<DetailsBean.PictBean> dpict=new ArrayList<DetailsBean.PictBean>();                  for (int j=0;j<pict.size();j++){                      dpict.add(pict.get(j));                  }                  generalss.add(dpict);              }              Log.i("exutils---2>",generalss.toString());              return generalss;          }          private ArrayList<ArrayList<DetailsBean.PictBean>> generals=getGenerals();

4.ExpandableListAdapter中的实现如下:

      final ExpandableListAdapter adapter = new BaseExpandableListAdapter() {          //设置组视图的图片//          int[] logos = new int[] { R.drawable.ic_launcher, R.drawable.ic_launcher,R.drawable.ic_launcher};          //          private String [][] generals=ExUtils.getItemChild();          //子视图图片          /*public int[][] generallogos = new int[][] {                  { R.drawable.ic_launcher, R.drawable.ic_launcher,                          R.drawable.ic_launcher, R.drawable.ic_launcher,                          R.drawable.ic_launcher, R.drawable.ic_launcher },                  { R.drawable.ic_launcher, R.drawable.ic_launcher,                          R.drawable.ic_launcher, R.drawable.ic_launcher,                          R.drawable.ic_launcher, R.drawable.ic_launcher },                  { R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher,                          R.drawable.ic_launcher, R.drawable.ic_launcher } };*/          public List<DetailsBean>  detailsList= ExUtils.gsonData().getData().getDetails();            /**一级列表数据**/          public ArrayList<String> getGeneralsTypes(){              ArrayList<String> generalsTypes=new ArrayList<String>();              for(int i=0;i<detailsList.size();i++){                generalsTypes.add(detailsList.get(i).getTag_title());            }            return generalsTypes;          }          private ArrayList<String> generalsTypes=getGeneralsTypes();          /**二级列表数据**/          public ArrayList<ArrayList<DetailsBean.PictBean>> getGenerals(){             // Objects[][] objectsesGener=new Objects[detailsList.size()][];              ArrayList<ArrayList<DetailsBean.PictBean>> generalss = new  ArrayList<ArrayList<DetailsBean.PictBean>>();              for (int i=0;i<detailsList.size();i++){                  DetailsBean detailsBean = detailsList.get(i);                  List<DetailsBean.PictBean> pict = detailsBean.getPict();                  ArrayList<DetailsBean.PictBean> dpict=new ArrayList<DetailsBean.PictBean>();                  for (int j=0;j<pict.size();j++){                      dpict.add(pict.get(j));                  }                  generalss.add(dpict);              }              Log.i("exutils---2>",generalss.toString());              return generalss;          }          private ArrayList<ArrayList<DetailsBean.PictBean>> generals=getGenerals();          //自己定义一个获得文字信息的方法          TextView getTextView() {              AbsListView.LayoutParams lp = new AbsListView.LayoutParams(                      ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);              TextView textView = new TextView(                      MainActivity.this);              textView.setLayoutParams(lp);              textView.setGravity(Gravity.CENTER_VERTICAL);              textView.setPadding(36, 0, 0, 0);              textView.setTextSize(20);              textView.setTextColor(Color.BLACK);              return textView;          }          //重写ExpandableListAdapter中的各个方法          @Override          public int getGroupCount() {              // TODO Auto-generated method stub              return generalsTypes.size();          }          @Override          public Object getGroup(int groupPosition) {              // TODO Auto-generated method stub              return generalsTypes.get(groupPosition);          }          @Override          public long getGroupId(int groupPosition) {              // TODO Auto-generated method stub              return groupPosition;          }          @Override          public int getChildrenCount(int groupPosition) {              // TODO Auto-generated method stub              return generals.get(groupPosition).size();          }          @Override          public DetailsBean.PictBean getChild(int groupPosition, int childPosition) {              // TODO Auto-generated method stub              return    generals.get(groupPosition).get(childPosition);          }          @Override          public long getChildId(int groupPosition, int childPosition) {              // TODO Auto-generated method stub              return childPosition;          }          @Override          public boolean hasStableIds() {              // TODO Auto-generated method stub              return true;          }          @Override          public View getGroupView(int groupPosition, boolean isExpanded,                                   View convertView, ViewGroup parent) {              // TODO Auto-generated method stub              LinearLayout ll = new LinearLayout(                      MainActivity.this);//              ll.setOrientation(0);              ImageView logo = new ImageView(MainActivity.this);//              logo.setImageResource(logos[groupPosition]);              logo.setPadding(50, 0, 0, 0);              ll.addView(logo);              TextView textView = getTextView();              textView.setTextColor(Color.BLACK);              textView.setText(getGroup(groupPosition).toString());              ll.addView(textView);              return ll;          }          @Override          public View getChildView(int groupPosition, int childPosition,                                   boolean isLastChild, View convertView, ViewGroup parent) {              // TODO Auto-generated method stub              LinearLayout ll = new LinearLayout(                      MainActivity.this);//              ll.setOrientation(0);//              ImageView generallogo = new ImageView(//                      MainActivity.this);//              generallogo//                      .setImageResource(generallogos[groupPosition][childPosition]);//              ll.addView(generallogo);              TextView textView = getTextView();              textView.setText(getChild(groupPosition, childPosition).getContent());              ll.addView(textView);              Log.i("exutils---1>","groupPosition+childPosition=["+groupPosition+","+childPosition+"]");              Log.i("exutils---1>",getChild(groupPosition, childPosition).getContent());              return ll;          }          @Override          public boolean isChildSelectable(int groupPosition,                                           int childPosition) {              // TODO Auto-generated method stub              return true;          }      };
  1. 最后在MainActivity中将数据添加到视图view上显示出来:
 ExpandableListView expandableListView = (ExpandableListView) findViewById(R.id.list);      expandableListView.setAdapter(adapter);      //设置item点击的监听器      expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {          @Override          public boolean onChildClick(ExpandableListView parent, View v,                                      int groupPosition, int childPosition, long id) {              Toast.makeText(                      MainActivity.this,                      "你点击了" + adapter.getChild(groupPosition, childPosition),                      Toast.LENGTH_SHORT).show();              return false;          }      });      }

代码下载地址:点我

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 半年汽车没有年检 交警抓到怎么办 没年检的车子被交警抓到怎么办 去年检的路上被交警抓了怎么办 微信聊天界面群聊删除找不到怎么办 微博抽奖的奖品没发货怎么办 两个微信号绑了一个手机号怎么办 欧月玫瑰花朵叶子上有白粉怎么办 进对方空间被挡不想让他知道怎么办 qq上买东西给钱了对方没给怎么办 微信钱包手势密码忘记了怎么办 买家一起拍了两件宝贝怎么办 宿雾航空付款无法显示验证码怎么办 不小心把购物车的东西删了怎么办 微信在别人电脑登录忘退出怎么办 微信电脑版忘了退出怎么办 给微商交了定金不给退怎么办 方舟手游飞龙驯服时间不够怎么办 淘宝上买了假货找不到商家怎么办 魅蓝手机一直在开机画面怎么办 在实体店买的手机想退怎么办 淘宝买了东西发货了不想要了怎么办 快递已经发货了不想要了怎么办 锤子手机买了不到十天碎屏了怎么办 唯品会新人专享优惠卷过期了怎么办 我微信被系统说赌博登陆不起怎么办 平湖新居民积分卡怎么办办好办吗 电话卡插上去只能打紧急电话怎么办 不小心充错q币了怎么办 液相色谱柱堵了怎么办处理柱子 扣扣空间宠物消消87关怎么办 微信钱包里的钱忘记密码了怎么办 支付宝绑定银行卡要验证码怎么办 微信红包超出20万限额怎么办 微信充电信的号码话费没到账怎么办 农业银行手机银行转账转错了怎么办 微信钱包里的零钱不见了怎么办 买家说支付宝没钱要微信付钱怎么办 微信红包没绑卡密码忘了怎么办 手机微信红包密码忘了怎么办 qq账号忘了怎么办什么也没绑定 手机银行转账名字对卡号错了怎么办