Json文件放入Assets文件,读取解析并且放入listview中显示。
package com.lixu.TestJson; import android.app.Activity;
import android.content.Context;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast; import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List; public class MainActivity extends Activity {
private ListView mListView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 第一步实例化控件
mListView = (ListView) findViewById(R.id.list); // 第二步数据源
List<Book> bookList = getBooks(); MyBooksAdapter adapter = new MyBooksAdapter(this);
// 使用适配器中的方法将数据设置进去
adapter.setBookList(bookList);
mListView.setAdapter(adapter); } // 第三步适配器
public class MyBooksAdapter extends BaseAdapter {
private List<Book> bookList = new ArrayList<Book>();
private LayoutInflater mLayoutInflater; public MyBooksAdapter(Context context) {
mLayoutInflater = LayoutInflater.from(context);
} // 添加这个方法,便于外部传递数据源进来
public void setBookList(List<Book> bookList) {
this.bookList = bookList;
notifyDataSetChanged();
} @Override
public int getCount() {
return bookList.size();
} @Override
public Object getItem(int i) {
return bookList.get(i);
} @Override
public long getItemId(int i) {
return i;
} @Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (view == null) {
view = mLayoutInflater.inflate(android.R.layout.simple_list_item_1, null);
}
TextView textView = (TextView) view; Book book = (Book) getItem(i);
textView.setText(book.getId() + " " + book.getName()); Toast.makeText(getApplicationContext(), book.getId() + " " + book.getName(), 1).show(); return view;
}
} public List<Book> getBooks() {
// 从Asset文件中找到文件,获取json字符串
AssetManager assetManager = this.getAssets();
InputStream inputStream = null;
List<Book> bookList = new ArrayList<Book>();
try {
inputStream = assetManager.open("myjson.json");
String jsonStr = readInPutStream(inputStream);
// 解析jason
JSONObject jsonObjectRoot = null;
jsonObjectRoot = new JSONObject(jsonStr);
JSONArray jsonArray = jsonObjectRoot.getJSONArray("books");
int length = jsonArray.length();
for (int i = 0; i < length; i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
JSONObject jsonBook = jsonObject.getJSONObject("book");
String bookName = jsonBook.getString("name");
int bookId = jsonBook.getInt("id"); Book book = new Book();
book.setId(bookId);
book.setName(bookName);
bookList.add(book);
}
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bookList; } // 从字节流中读取数据转换为String字符串
public String readInPutStream(InputStream inputStream) {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
StringBuilder stringBuilder = new StringBuilder();
try {
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} return stringBuilder.toString();
}
}
package com.lixu.TestJson;
import java.io.Serializable; /**
* Created by Administrator on 2015/12/31.
*/
public class Book implements Serializable{
private int id;
private String name; public Book() { } public Book(int id, String name) {
this.id = id;
this.name = name;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} }
package com.lixu.TestJson; import java.util.List; /**
* Created by Administrator on 2015/12/31.
*/
public class BookInfo { private List<BookResult> books; public List<BookResult> getBooks() {
return books;
} public void setBooks(List<BookResult> books) {
this.books = books;
} }
package com.lixu.TestJson; /**
* Created by Administrator on 2015/12/31.
*/
public class BookResult {
private Book book; public Book getBook() {
return book;
} public void setBook(Book book) {
this.book = book;
} }
Json文件放入Assets文件,读取解析并且放入listview中显示。的更多相关文章
- [置顶] 读取pdf并且在web页面中显示
读取pdf并且在web页面中显示 if (System.IO.File.Exists(f)) { Response.ContentType = "applicationpdf"; ...
- Android开发:第四日番外——Assets文件夹和RAW文件夹区别
话说上回说到SQLite数据库,其中涉及到把已经设计好的数据库打包到APK中,提到可以放置在Assert文件夹或者RAW文件夹中,那么两者到底有什么区别呢?让我们来探究一下. 一.res/raw和as ...
- Android(java)学习笔记135:Android中assets文件夹资源的访问
Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件 ...
- Android(java)学习笔记77:Android中assets文件夹资源的访问
Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件 ...
- android assets文件夹浅谈
---恢复内容开始--- 最近在研究assets文件夹的一些属性跟使用方法.根据网上一些文章.实例做一下汇总,拿出来跟大家分享下,有不足的地方还请多多指教. 首先了解一下assets是干什么用的,as ...
- Android 使用存放在存assets文件夹下的SQLite数据库
因为这次的项目需要自带数据,所以就就把数据都放到一个SQLite的数据库文件中了,之后把该文件放到了assets文件夹下面.一开始打算每次都从assets文件夹下面把该文件夹拷贝到手机的SD卡或者手机 ...
- 42、使用存放在存assets文件夹下的SQLite数据库
因为这次的项目需要自带数据,所以就就把数据都放到一个SQLite的数据库文件中了,之后把该文件放到了assets文件夹下面.一开始打算每次都从assets文件夹下面把该文件夹拷贝到手机的SD卡或者手机 ...
- Android开发系列(十七):读取assets文件夹下的数据库文件
在做Android应用的时候,不可避免要用到数据库.可是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客攻克了我前面博客中 ...
- plist文件、NSUserDefault 对文件进行存储的类、json格式解析
========================== 文件操作 ========================== Δ一 .plist文件 .plist文件是一个属性字典数组的一个文件: .plis ...
随机推荐
- [转载] 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构
原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=209406532&idx=1&sn=2e9b0cc02bdd ...
- apiCloud授权绑定第三方账号,微信、QQ、微博。
1.检测软件是否安装 2.授权获取code 3.获取token,openid等 4.获取头像昵称 var wx,qq,weibo; var loginParam={}; apiready = func ...
- C++中的虚函数与纯虚函数
这个吧,我也不怎么知道,所以,大家来看这两篇文章哦: http://blog.csdn.net/hackbuteer1/article/details/7558868 http://blog.csdn ...
- (三)主控板生级uboot与内核
一.升级uboot 把我的电脑增加一个192.168.1.3的ip,方便升级boot. 1.连接串口,连接网口到GE1; 2.登陆电脑后到D:\MTG3000MAIN\first目录打开tftp32 ...
- 【转载】【Centos linux系统】命令行(静默)安装oracle 11gR2
[原文]:http://blog.chinaunix.net/uid-23886490-id-3565998.html 一.安装前准备 1.内存及swap要求 至于swap如何添加,后文将提到 gre ...
- 使用JSPatch平台热修复iosApp
IOS产品开发中常常会遇到这种情况,线上发现一个严重bug,可能是一个crash,可能是一个功能无法使用,这时能做的只是赶紧修复Bug然后提交等待漫长的审核,即使申请加急也不会快到那里去,即使审核完了 ...
- 20160815_设置静态IP
1.CentOS6.4x64里面默认没有文件"/etc/sysconfig/network-scripts/ifcfg-eth0"(还是 是有的,但是默认为空??以后再看吧...) ...
- hiho_1138_island_travel
题目 二维平面上有n个点,每个点的横纵坐标均为非负整数.两个点之间的距离记为 min(abs(x1 - x2), abs(y1 - y2)),求从点1到达点n的最短路径长度. 比较容易想到使用最短路径 ...
- hiho_1061_beautiful_string
题目大意 题目连接:beautiful string 写代码之前,考虑清楚流程,以及需要维护的变量.... 实现 #include<iostream> #include<st ...
- drupal里面的ajax最粗浅的理解-流程
1, form里面的ajax所在地表单元素有一个事件,激发system/ajax,相应的有ajax_form_callback(), 会把被改变的元素值传到form_state[values]中, ...