0

我通过在 URL 中使用学校名称作为参数从服务器获取学校信息现在我使我的应用程序脱机。假设如果我从服务器获取所有学校名称并将其保存在 sd 卡中的文本文件中,我如何通过将学校名称作为参数在本地搜索学校名称? ?

          URL2=www.xyz+ElementarySchools;
           URL2=www.xyz+MiddleSchools;
              URL2=www.xyz+HighSchools;



          try {
         Log.i("URL2",""+URL2);

        HttpClient client = new DefaultHttpClient();
         HttpConnectionParams
                .setConnectionTimeout(client.getParams(), 15000);
        HttpConnectionParams.setSoTimeout(client.getParams(), 15000);
        HttpUriRequest request = new HttpGet(URL2);
        HttpResponse response = client.execute(request);
        InputStream atomInputStream = response.getEntity().getContent();
        BufferedReader in = new BufferedReader(new    
                  InputStreamReader(atomInputStream), 8192);

        String line;
        String str = "";
        while ((line = in.readLine()) != null) {
            str += line;
        }



                            JSONObject json2 = new JSONObject(str);

        status = json2.getString("status");
        if (status.equals("1")) {
            message = "data";

            JSONArray school = json2.getJSONArray("data");

            for (int i = 0; i < school.length(); i++) {
                JSONObject object = school.getJSONObject(i);

                Category_ID.add(Long.parseLong(object
                        .getString("school_id")));
                Category_name.add(object.getString("name"));

            }

        }


                                }

    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        IOConnect = 1;
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }








              {"status":1,"data":[
           {"school_id":"321","name":"Chavez","phone":"","email":"",
          "address":"","information":"","image":"","calendar_id":"2","id":"147","level_id":"1",
          "title":"Elementary Schools"},  

      {"school_id":"319","name":"Central","phone":"","email":"", 
     "address":"","information":"","image":"","calendar_id":"2",
     "id":"145","level_id":"1","title":"Elementary Schools"},

      {"school_id":"318","name":"Carver","phone":"","email":"",
    "address":"","information":"","image":"","calendar_id":"2",
    "id":"144","level_id":"1","title":"Elementary Schools"},

  {"school_id":"317","name":"Carson","phone":"","email":"",
  "address":"","information":"","image":"","calendar_id":"2","id":"143",
   "level_id":"1","title":"Elementary Schools"},

 {"school_id":"316","name":"Cadman","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"1",
 "id":"142","level_id":"1","title":"Elementary Schools"},

 {"school_id":"315","name":"Cabrillo","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"1",
 "id":"141","level_id":"1","title":"Elementary Schools"},

 {"school_id":"314","name":"Burbank","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"2",
 "id":"140","level_id":"1","title":"Elementary Schools"},

 {"school_id":"313","name":"Boone","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"2",
 "id":"139","level_id":"1","title":"Elementary Schools"},

{"school_id":"498","name":"Zamorano","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"2",
 "id":"324","level_id":"1","title":"Elementary Schools"},

 {"school_id":"451","name":"Pershing","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"1",
 "id":"277","level_id":"2","title":"Middle Schools"},

 {"school_id":"454","name":"Preuss","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"1",
 "id":"280","level_id":"2","title":"Middle Schools"},

{"school_id":"457","name":"Riley","phone":"","email":"",
"address":"","information":"","image":"","calendar_id":"1",
 "id":"284","level_id":"2","title":"Middle Schools"},

{"school_id":"462","name":"Roosevelt","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"1",
"id":"288","level_id":"2","title":"Middle Schools"},

{"school_id":"468","name":"SCPA","phone":"","email":"",
"address":"","information":"","image":"","calendar_id":"1",
"id":"294","level_id":"2","title":"Middle Schools"},

{"school_id":"478","name":"Standley","phone":"","email":"",
"address":"","information":"","image":"","calendar_id":"1",
 "id":"304","level_id":"2","title":"Middle Schools"},

 {"school_id":"431","name":"Muir","phone":"","email":"",
"address":"","information":"","image":"","calendar_id":"1",
"id":"258","level_id":"3","title":"High Schools"},

 {"school_id":"439","name":"O'Farrell","phone":"","email":"",
"address":"","information":"","image":"","calendar_id":"1",
 "id":"267","level_id":"3","title":"High Schools"},


{"school_id":"452","name":"Point Loma","phone":"","email":"",
 "address":"","information":"","image":"","calendar_id":"1",
"id":"278","level_id":"3","title":"High Schools"},

 {"school_id":"454","name":"Preuss","phone":"","email":"",
"address":"","information":"","image":"","calendar_id":"1",
"id":"281","level_id":"3","title":"High Schools"},


 {"school_id":"466","name":"San Diego","phone":"","email":"","address":"",
 "information":"","image":"","calendar_id":"1",
"id":"292","level_id":"3","title":"High Schools"}]}
4

2 回答 2

0

只需打开文本文件并读取所有文本,然后由您决定是将 JSON 解析为对象还是对整个字符串运行 IndexOf。

这是从文件中读取文本的方法,

public String readFile(File fFileIn) throws IOException{
    if(fFileIn == null) return "";
    if(!fFileIn.exists()) return "";

    FileInputStream fis = new FileInputStream(fFileIn);
    byte [] bContent = new byte[(int) (fFileIn.length() + 1)];
    fis.read(bContent);
    return new String(bContent, Charset.defaultCharset());
}
于 2013-10-12T06:35:48.447 回答
0

使用 Web 服务时,建议您维护本地和持久存储,以供离线访问。

浏览本教程:http ://androidituts.com/android-sqlite-database-tutorial/

只有您需要更改的部分是,而不是:

Category_ID.add(Long.parseLong(object
                        .getString("school_id")));
Category_name.add(object.getString("name"));

您只需要编写数据库的插入查询,这在上面的教程中也有提及。

希望我的推荐适合你...

于 2013-10-12T06:37:10.603 回答