我想问你是否知道显示来自WebService的数据(可能是表格格式)的实用方法。
我是j2me的新手,我刚刚学会了如何使用RESTful web服务,现在我需要学习如何向用户显示数据(以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数组?当你必须处理大量结果时,你如何处理有限的内存和小屏幕尺寸等限制?
一如既往,如果您能提供任何建议或资源,我将不胜感激。
提前感谢。
注:这是我用来处理json的jar。
这个链接一定会帮助你处理JSONArray。
谈论内存限制,你只是试图清理资源/数据结构,你不需要任何更多的意味着UI只是保持当前屏幕的实例存活(如果可能的话),不需要其他实例在堆栈中。如果您的数组包含许多对象,而您不能一次显示这些对象(这可能导致类似于OOM的问题),那么您可以考虑分页。
你可以从这个必须看到的演示中得到关于内存优化的更好的想法