作为java应用程序工作不作为Android应用程序

时间:2011-08-12 18:30:06

标签: android

我正在从本地驱动器读取一个json文件并将其作为gson。它作为一个java应用程序工作。

    Gson gson = new Gson();
    BufferedReader br = new BufferedReader(new FileReader("D:\\AircraftService.json"));
    DataObject[] obj = gson.fromJson(br, DataObject[].class);
    System.out.println("The object length is: " + obj.length);
    for(int i = 0; i<obj.length ; i++ )
    {
        System.out.println(obj[i].AC + "  " + obj[i].Fleet + " " + obj[i].SubFleet);
    }

使用这个我试图填充一个安卓列表

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listplaceholder);
    ListView lv= (ListView)findViewById(R.id.list); 

    Gson gson = new Gson();
    BufferedReader br = new BufferedReader(new FileReader("D:\\AircraftService.json"));

DataObject[] obj = gson.fromJson(br, DataObject[].class);
List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>(); 
for(int i=0 ; i<obj.length ; i++){      

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("AC",  obj[i].AC);
    map.put("Fleet", obj[i].Fleet );
    map.put("SubFleet", obj[i].SubFleet );
    fillMaps.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.main, new String[] {"AC", "Fleet"}, new int[] {R.id.ac, R.id.fleet});  
lv.setAdapter(adapter);  
}

无法填充对象。输出是空白的。你能告诉我哪里出错了。

2 个答案:

答案 0 :(得分:1)

我确定您的文件不会驻留在Android设备上的D:\AircraftService.json中。 调整路径,如果您将文件存储在那里,请使用Environment.getExternalStorageDirectory()获取SD卡或闪存的路径。如果您将其存储在应用资产文件夹中,请使用file:///android_asset/作为基本路径,并附加文件名(和子文件夹)。


编辑:考虑下面的评论,这是一个简短的方法。

首先,我建议将文件存储在资源中,因为阅读SD卡需要对您的应用程序进行单独许可。

您项目中的一个名为res/的文件夹。在其中创建一个子文件夹,将其命名为raw。这是一个标准的android命名约定,用于存储非标准资源(如布局或字符串)的文件。之后,您应该能够使用路径file:///android_asset/raw/AircraftService.json

访问该文件

答案 1 :(得分:0)

无法打开json文件的路径。尝试移动文件,在assets folder中说,而不是打开它。

相关问题