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 ...
随机推荐
- iOS - OC NSString 字符串
前言 @interface NSString : NSObject <NSCopying, NSMutableCopying, NSSecureCoding> @interface NSM ...
- caffe里的blocking_queue.hpp与.cpp干了点什么呢???
我看的一下午才明白的,因为吧,我之前都是不知道与boost::thread相关的任何知识,然后开始看各种资料啊... 妈的,我就是一个小白,没一点基础的.. 总的来说:blocking_queue实现 ...
- Java源码初学_HashMap
一.概念 HashMap的实例有两个参数影响其性能:初始容量和加载因子.容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量.加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度.当哈希表 ...
- html5实现GIF动画!
代码如下: <!DOCTYPE html><html> <head> <meta charset="utf-8"&g ...
- Poco C++——JSON解析
#include <iostream> #include "Poco/Dynamic/Var.h" #include "Poco/Dynamic/Pair.h ...
- Java 中使用 UEditor 整理【待续。。。】
1.简介 官网:http://ueditor.baidu.com/website/index.html 演示:http://ueditor.baidu.com/website/examples/ 2. ...
- 慕课网:C++ & 数据结构
课程链接:james_yuan的课程 这部分太枯燥了,如果教材难度稍大,根本就学不下去,所以就先看看通俗的视频吧. 课程目录 1.C++远征之起航篇 - C++亮点尽在其中 2.C++远征之离港篇 - ...
- R语言实战
教材目录 第一部分 入门 第一章 R语言介绍 第二章 创建数据集 第三章 图形初阶 第四章 基本数据管理 第五章 高级数据管理 第二部分 基本方法 第六章 基本图形 第七章 基本统计方法 第三部分 中 ...
- 第二章 Python基本元素:数字、字符串和变量
Python有哪些内置的数据类型: True False #布尔型 42 100000000 #整型 3.14159 1.0e8 #浮点型 abcdes #字符串 2.1 变量.名字和对象 pytho ...
- Unity shader(CG) 写一个 散色、折射、反射、菲涅尔、gamma、简单后期屏幕特效
http://www.lai18.com/content/506918.html 1.自生要求是很重要的,当然不是什么强迫工作之类的,而是自己有限的能力上不断的扩展兴趣上的内容. 2.用生活的眼光去发 ...