j2me: рекомендуемый способ отображения значительного количества результатов

Я хочу спросить вас, знаете ли вы о практическом способе отображения данных (возможно, в табличном формате), поступающих из веб-сервиса.

Я действительно новичок в j2me, я только что научился использовать веб-сервисы RESTful, теперь мне нужно научиться показывать эти данные (которые поступают в формате 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;
   }

Как вы можете видеть, я только объединяю результаты, чтобы затем показать их пользователю. Но, конечно же, для этого должны быть лучшие способы, и здесь мне нужна ваша помощь.

Как бы вы отобразили типичный массив json в j2me?? Как вы справляетесь с такими ограничениями, как ограниченный объем памяти и маленький размер экрана, когда вам приходится работать со значительным количеством результатов?

Как всегда, любые советы или ресурсы, которые вы могли бы предоставить, будут очень признательны.

Заранее спасибо.

P.S. Это банка, которую я использовал для работы с json.


person eddy    schedule 25.05.2014    source источник


Ответы (1)


Эта ссылка определенно поможет вам разобраться с JSONArray.

Чтобы поговорить об ограничении памяти, вы просто пытаетесь очистить ресурсы/структуры данных, которые вам больше не нужны, означает, что пользовательский интерфейс просто поддерживает экземпляр текущего экрана (если возможно), нет необходимости в других экземплярах в стеке. Если ваш массив содержит много объектов, которые вы не можете отобразить одновременно (что может вызвать проблемы, подобные OOM), тогда вы можете подумать о разбиении на страницы.

Вы можете лучше понять оптимизацию памяти из этой презентации.

person vITs    schedule 27.05.2014
comment
Спасибо. Я использовал первую ссылку в качестве ссылки. На самом деле у меня нет проблем с объектами или массивами в формате json, с ними довольно легко работать. Мой вопрос больше касается того, как отображать эти объекты, когда речь идет о значительном количестве результатов. Пагинация была еще одной вещью, которую я имел в виду, но я просто не могу найти ни одного примера по этому поводу. - person eddy; 27.05.2014
comment
Предположим, у вас есть список, содержащий 100 элементов. Вы можете перебрать первые 10 элементов и составить список. Показать список из 10 элементов. Нажав кнопку «Далее», повторите следующие 10 элементов, пополните существующий список, очистив его данные в первую очередь. без накладных расходов муравья. это ваш выбор. - person vITs; 27.05.2014
comment
Да, я слышал об этих инфраструктурах пользовательского интерфейса. Проблема заключается в отсутствии информации об отображении больших массивов в табличном формате или использовании разбиения на страницы. Как будто они говорят вам, что ресурсы есть, посмотрите, сможете ли вы что-нибудь из них сделать. - person eddy; 27.05.2014
comment
вам просто нужно использовать TableItem. Вот и все. Проверьте это: пример и Вики-страница - person vITs; 27.05.2014
comment
Я нашел эту страницу вчера, и она работает относительно хорошо. Я говорю относительно, потому что есть проблема с таблицами, ширина которых больше экрана. По крайней мере, в моем случае он не прокручивается до конца таблицы. - person eddy; 27.05.2014
comment
что с пагинацией? У вас есть ссылка, которой вы можете поделиться? - person eddy; 27.05.2014
comment
Я сделал это в полировке j2me. И у меня нет ссылок для этого, так как я сам управлял. /a> проверьте это один раз. Если ответ был полезен, не забудьте принять его. - person vITs; 27.05.2014