我是Android开发的新手,但我编写了很多C#(WinF,WPF)。我为app创建了一个测验应用程序(德语单词),我不太确定如何存储和加载字典(一个文件,其中行包含2个单词)。存储这些词典的最佳方法是什么?我google了一下,但没有找到确切的答案。目前我直接在代码中生成单词。 谢谢!
答案 0 :(得分:1)
由于您只有键值对,我建议您从数据中创建一个json,存储到assests文件夹并在运行时使用。
例如。 CountyCode.json
[
{
"country_name": "Canada",
"country_code": 1
},
{
"country_name": "United States of America",
"country_code": 1
},
{
"country_name": "US Virgin Islands",
"country_code": 1
},
{
"country_name": "Russia",
"country_code": 7
},
{
"country_name": "Tajikistan",
"country_code": 7
}]
使用以下代码在需要时加载并解析json数据。
从assests文件夹加载json
String countryJson = FileManager.getFileManager().loadJSONFromAsset(getActivity(), "countrycode.json")
;
解析json并使用
try {
JSONArray jsonArray = new JSONArray(countryJson);
if (jsonArray != null) {
final String[] items = new String[jsonArray.length()];
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
items[i] = jsonObject.getString("country_name");
}
<强> FileManager.java 强>
import android.content.Context;
import java.io.IOException;
import java.io.InputStream;
/**
* Created by gaurav on 10/10/15.
*/
public class FileManager {
static FileManager fileManager = null;
private FileManager(){}
public static FileManager getFileManager()
{
if(fileManager==null)
fileManager = new FileManager();
return fileManager;
}
public String loadJSONFromAsset(Context context,String fileName) {
String json = null;
try {
InputStream is = context.getAssets().open(fileName);
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;
}
}