关闭

TypeToken解析二级列表

150人阅读 评论(0) 收藏 举报
分类:

package com.bwie.main;

import java.io.IOException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.ExpandableListView;

import com.bwie.bean.MyAdapter;
import com.bwie.bean.Nextcontent;
import com.bwie.bean.Root;
import com.example.android_15_exlistview.R;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.lidroid.xutils.DbUtils;
import com.lidroid.xutils.db.sqlite.WhereBuilder;
import com.lidroid.xutils.exception.DbException;

public class MainActivity extends Activity {
private DbUtils dbUtils;
private ExpandableListView exLv;
@SuppressLint(“HandlerLeak”)
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
@SuppressWarnings(“unchecked”)
List list = (List(Root)) msg.obj;
// 插入数据库
Insert(list);
// 从数据中查询数据,构建二级列表的条件
List(List(Nextcontent)) childList = select(list);
// 传给适配器
MyAdapter adapter = new MyAdapter(MainActivity.this, list,
childList);
exLv.setAdapter(adapter);
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    dbUtils = DbUtils.create(this, "Context.db");
    exLv = (ExpandableListView) findViewById(R.id.ExLv);
    new Thread() {
        @Override
        public void run() {
            NetWork();
        }
    }.start();
}

// 请求网络
public void NetWork() {
    // 请求数据地址
    String path = "http://169.254.224.177:8080/an.json";
    HttpClient httpClient = new DefaultHttpClient();
    // 请求方式
    HttpGet httpGet = new HttpGet(path);
    // 传递给服务器
    try {
        HttpResponse response = httpClient.execute(httpGet);
        // 从服务器中取回数据
        HttpEntity httpEntity = response.getEntity();
        // 转换为String类型
        String str = EntityUtils.toString(httpEntity, "utf-8");
        // TypeToken解析 方括号的Json串
        Type type = new TypeToken<List<Root>>() {
        }.getType();
        // 解析
        Gson gson = new Gson();
        List<Root> list = gson.fromJson(str, type);
        Message msg = Message.obtain();
        msg.obj = list;
        handler.sendMessage(msg);
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

// 添加方法
public void Insert(List<Root> list) {
    for (Root root : list) {
        String className = root.getClassname();
        // 一级列表
        List<Nextcontent> nextcontent = root.getNextcontent();
        if (nextcontent != null) {
            for (Nextcontent next : nextcontent) {
                next.setClassname(className);
            }
        }
        // 多添加一个字段 为了判断出 二级列表的分类 添加二级列表的第一端
        try {
            dbUtils.saveAll(nextcontent);
        } catch (DbException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

// 查询方法
public List<List<Nextcontent>> select(List<Root> list) {
    List<List<Nextcontent>> childlist = new ArrayList<List<Nextcontent>>();
    for (Root root : list) {
        try {
            // 判断条件是否一样
            List<Nextcontent> child = dbUtils.findAll(Nextcontent.class,
                    WhereBuilder.b("classname", "=", root.getClassname()));
            childlist.add(child);
        } catch (DbException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        for (List<Nextcontent> list2 : childlist) {
            if (list2 != null) {
                for (Nextcontent nextcontent : list2) {
                    Log.i("zzz", "有数据:" + nextcontent.getClassname());
                }
            }
        }
    }
    return childlist;

}

}

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Gson搭配TypeToken实现复杂数据的解析

今天在开发过程中使用Gson解析遇到了一些问题,希望通过写博客的形式增强自己的记忆,以后尽量少走弯路,也希望通过写博客的形式加强自己对知识更为透彻的理解。 关于Gson解析,用起来是非...
  • u011125199
  • u011125199
  • 2016-08-15 23:43
  • 2548

android中树形json解析为对象,并通过dialog显示,多级列表

{"id":"0","text":"信件简历夹","type":"root","data":"0","state":{&...
  • qq_21036939
  • qq_21036939
  • 2015-12-09 17:31
  • 1598

利用gson处理Java反射TypeToken泛型运行时类型擦除

private List listLottery = new ArrayList();   Gson gson=new Gson(); JSONObject object=new J...
  • qq_29678299
  • qq_29678299
  • 2016-04-04 19:56
  • 7883

JSDom加载解析XML文件——下拉列表二级联动篇

以前在项目中实现二级联动是通过单纯的JS方法,在对JS的深度了解中发现通过JSDom加载写好的XML文件也可以实现二级联动,这也不失为一种好的方法,下面就跟大家分享一下。首先,我们来看下要呈现的效果:...
  • Astonish__
  • Astonish__
  • 2011-03-21 17:25
  • 865

TypeToken解析

package com.bwie.wdhm;import java.io.IOException; import java.lang.reflect.Type; import java.util....
  • kaisengao
  • kaisengao
  • 2016-06-01 09:33
  • 1910

jquery实现下拉列表二级联动

function getPositionGrade(){ $("#flag").nextAll().remove();//如果二级有列表,清除下 //下拉列表二级联动内容 var p...
  • LQW_java_home
  • LQW_java_home
  • 2016-12-08 09:12
  • 2178

下拉列表二级联动 axure原型

在axure原型中,如何快速创建下拉列表的二级联动呢? 用动态面板的value属性可以快速完成。 例,位置-媒体位置存在二级联动关系,如下图 1.创建两个列表并命名。 2.将“媒体位置”列...
  • pingguoyuan
  • pingguoyuan
  • 2017-03-14 17:22
  • 1023

android 购物车二级列表实现

首先看个效果图: 在我们做这个是时候,首先必须一定要导入权限: uses-permission android:name="android.permission.INTERNET" /> us...
  • wqzfy
  • wqzfy
  • 2017-12-18 20:10
  • 88

二级下拉列表菜单ExpandTabViews(仿团购app)

这里制作一个改进版,加深对Android相关界面技术的理解,如弹框PopWindow,自定义控件,自定义ToggleButton,回调机制. 实现效果如下图: 看了效果还是有兴趣吧...
  • xzylx1
  • xzylx1
  • 2016-02-15 18:05
  • 672

高仿淘宝 二级列表固定数据 购物车

转载:http://blog.csdn.net/u013278099/article/details/50822074 前言 做商城类电商app购物车确实一直是一个难点,为什么难呢? ...
  • IT666DHW
  • IT666DHW
  • 2017-12-19 20:05
  • 196
    个人资料
    • 访问:16321次
    • 积分:394
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档