j2me:推荐显示相当数量结果的方法

时间:2014-05-25 21:53:58

标签: json java-me tabular

我想问你是否知道显示来自WebService的数据(可能是表格格式)的实用方法。

我是j2me的新手,我刚刚学会了如何使用RESTful webservices,现在我需要学习如何向用户显示数据(以json格式显示)。

基本上这是我使用的代码:

 protected String jsonParse(String url) {
        StringBuffer stringBuffer = new StringBuffer();
        InputStream is = null;
        HttpConnection hc = null;
        System.out.println(url);
        String Results = null;
        try {
            mProgressString.setText("Connecting...");
            hc = (HttpConnection) Connector.open(url, Connector.READ);
            hc.setRequestMethod(HttpConnection.GET);
            hc.setRequestProperty("User-Agent", "Profile/MIDP-2.1 Configuration/CLDC-1.1");
            if (hc.getResponseCode() == HttpConnection.HTTP_OK) {
                is = hc.openInputStream();
                int ch;
                while ((ch = is.read()) != -1) {
                    stringBuffer.append((char) ch);
                }
            }
        } catch (SecurityException se) {
            System.out.println("Security Excepction: " + se);
        } catch (NullPointerException npe) {
            System.out.println("Null Pointer Excepction: " + npe);
        } catch (IOException ioe) {
            System.out.println("IO Exception" + ioe);
        }
        try {
            hc.close();
            is.close();
        } catch (Exception e) {
            System.out.println("Error in MostActivePareser Connection close:" + e);
            e.printStackTrace();
        }
        String jsonData = stringBuffer.toString();
        try {
            JSONArray js = new JSONArray(jsonData);            
            System.out.println(js.length());
            mProgressString.setText("Reading...");
            String Results = "";
            for (int i = 0; i < js.length(); i++) {

                JSONObject jsObj = js.getJSONObject(i);
                Results += "-----------------------------------\n";
                Results += jsObj.getString("Name") + " \n";
                Results += jsObj.getString("Phone") + " \n";
                Results += jsObj.getString("Address");

            }
        } catch (JSONException e1) {
            System.out.println("Json Data error:" + e1);
            e1.printStackTrace();
        } catch (NullPointerException e) {
            System.out.println("null error:" + e);
        }
         return Results;
   }

正如你所看到的,我只是将结果连接起来然后显示给用户。但是肯定有更好的方法,这就是我需要你帮助的地方。

你如何在j2me中显示一个典型的json数组?当你需要处理大量的结果时,你如何处理有限的内存和小屏幕尺寸等限制?

与往常一样,您可以提供的任何建议或资源都将受到高度赞赏。

提前致谢。

P.S。 This is the jar我曾经和json一起工作。

1 个答案:

答案 0 :(得分:0)

这个link肯定会帮助你处理JSONArray。

谈到内存限制,你只是尝试清理你不再需要关于UI的资源/数据结构,只需保持当前屏幕的实例(如果可能),不需要堆栈中的其他实例。如果您的数组包含许多一次无法显示的对象(因为可能会导致OOM出现问题),那么您可以考虑分页。

您可以更好地了解内存优化,必须参阅presentation