public class MainActivity extends ListActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<Map<String, String>> list = buildData();
String[] from = { "Name", "Entry" };
int[] to = { android.R.id.text2, android.R.id.text1 };
SimpleAdapter adapter = new SimpleAdapter(this, list,
android.R.layout.simple_list_item_2, from, to);
setListAdapter(adapter);
}
private ArrayList<Map<String, String>> buildData() {
ArrayList<Map<String, String>> list =
new ArrayList<Map<String, String>>();
list.add(putData("Bulbasaur", "001"));
list.add(putData("Ivysaur", "002"));
list.add(putData("Venusaur", "003"));
return list;
}
private HashMap<String, String> putData(String name, String entry) {
HashMap<String, String> item = new HashMap<String,
String>();
item.put("Name", name);
item.put("Entry", entry);
return item;
}
我的目标是在上面列出的putData或buildData类中添加JSON引用。我有另一个类(下面),我将用它来引用本地存储的JSON文件。
public String loadJSONFromAsset() {
String json = null;
try {
InputStream is = getAssets().open("pokelist.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
我遇到的问题是,无论我做什么,JSON文件中的数据都不会显示在ListActivity中。我知道ListActivity有效,但我不完全确定如何使用JSON文件中的数据实现HashMap。
请有人给我一些指导。 请不要提供链接;我一整天都在寻找某种形式的例子,无济于事。 我可以使用一些我能理解的帮助。
澄清 我想要做的是从HDD加载JSON文件,并将键值放入HashMap;然后将显示在我的ListView(列表)中。
JSON代码:
{
"pokemon": [
{"Entry":"001",
"Name":"Bulbasaur", "Type":"1"},
{"Entry":"002",
"Name":"Ivysaur" , "Type":"1"},
{"Entry":"003",
"Name":"Venusaur", "Type":"1"}
]
}
最近的日志消息
12-04 22:00:53.652:E / Trace(2093):错误打开跟踪文件:没有这样的文件或目录(2) 12-04 22:00:53.712:W / System.err(2093):java.io.FileNotFoundException:pokelist.json 12-04 22:00:53.763:W / System.err(2093):at android.content.res.AssetManager.openAsset(Native Method) 12-04 22:00:53.763:W / System.err(2093):在android.content.res.AssetManager.open(AssetManager.java:315) 12-04 22:00:53.796:W / System.err(2093):在android.content.res.AssetManager.open(AssetManager.java:289) 12-04 22:00:53.796:W / System.err(2093):at com.example.myjsonproject.MainActivity.loadJSONFromAsset(MainActivity.java:78) 12-04 22:00:53.796:W / System.err(2093):at com.example.myjsonproject.MainActivity.buildData(MainActivity.java:44) 12-04 22:00:53.796:W / System.err(2093):at com.example.myjsonproject.MainActivity.onCreate(MainActivity.java:27) 12-04 22:00:53.796:W / System.err(2093):在android.app.Activity.performCreate(Activity.java:5104) 12-04 22:00:53.796:W / System.err(2093):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 12-04 22:00:53.796:W / System.err(2093):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 12-04 22:00:53.796:W / System.err(2093):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 12-04 22:00:53.796:W / System.err(2093):在android.app.ActivityThread.access $ 600(ActivityThread.java:141) 12-04 22:00:53.803:W / System.err(2093):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234) 12-04 22:00:53.836:W / System.err(2093):在android.os.Handler.dispatchMessage(Handler.java:99) 12-04 22:00:53.836:W / System.err(2093):在android.os.Looper.loop(Looper.java:137) 12-04 22:00:53.836:W / System.err(2093):在android.app.ActivityThread.main(ActivityThread.java:5041) 12-04 22:00:53.836:W / System.err(2093):at java.lang.reflect.Method.invokeNative(Native Method)
谢谢。
答案 0 :(得分:0)
以下是您可以尝试的内容:
JSONObject jj = new JSONObject(loadJSONFromAsset());
JSONArray jsonArray = jj.getJSONArray("pokemon");
for(int i = 0; i< jsonArray.length();i++) {
JSONObject ii = jsonArray.getJSONObject(i);
list.add(putData(ii.getString("Name"), ii.getString("Entry")));
}
阅读json的功能
public String loadJSONFromAsset() {
InputStream is = getApplicationContext().getAssets().open("pokelist.json");
int size = is.available();
buffer = new byte[size];
is.read(buffer);
is.close();
String bufferString = new String(buffer);
return bufferString ;
}
从这些行中可以清楚地看到项目的assets文件夹中缺少文件。
12-04 22:00:53.652: E/Trace(2093): error opening trace file: No such file or directory (2) 12-04 22:00:53.712: W/System.err(2093): java.io.FileNotFoundException: pokelist.json 12-04 22:00:53.763: