1

選択エントリが表示される回数を取得する次のコードがあります。

int k = 0;
             int j = 0;
             try {
                jsonArray = new JSONArray(result);
                for(int i = 0; i < jsonArray.length(); i++) {
                    JSONObject jsonObj = (JSONObject)jsonArray.get(i); // get the josn object
                    if(jsonObj.getString("type").equals("image")) { // compare for the key-value
                        k++;
                    }
                    if(jsonObj.getString("type").equals("text")) { // compare for the key-value
                        j++;
                    }
                }
                Toast.makeText(getApplicationContext(), String.valueOf(k), 2000).show();
                Toast.makeText(getApplicationContext(), String.valueOf(j), 2000).show();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

私のJSONファイルは次のとおりです。

[
    {
        "id": "12",
        "type": "text",
        "data": "This is a test"
    },
    {
        "id": "5465465",
        "type": "image",
        "data": "http://pagesbyz.com/theImages/gallery/portfolio_app07.png"
    },
    {
        "id": "982",
        "type": "text",
        "data": "THIS IS A TEST TEXT"
    },
    {
        "id": "5500",
        "type": "text",
        "data": "http://pagesbyz.com/theImages/gallery/portfolio_app03.png"
    }
]

だから...k = 1そしてj = 3

一致したエントリの配列全体を取得するにはどうすればよいですか?

たとえば、型が等しいimageと、情報を保持するために配列を設定する必要があります。

以下を Java で翻訳するにはどうすればよいですか?

for (as many times an "image" entry appears) {
    if ( type == "image") {
         imgarr[index found][id] = "5465465";
         imgarr[index found][type] = "image";
         imgarr[index found][data] = "http://pagesbyz.com/theImages/gallery/portfolio_app07.png";
    }
}

for (as many times an "text" entry appears) {
    if ( type == "text") {
         txtarr[index found][id] = "12";
         txtarr[index found][type] = "text";
         txtarr[index found][data] = "This is a test";

        txtarr[index found][id] = "082";
        txtarr[index found][id] = "text";
        txtarr[index found][id] = "THIS IS A TEST TEXT";

        and so forth...
    }
}

タイプが「テキスト」に等しい場合も同じですか?

4

1 に答える 1

1

2 つの新しい jsonArray 変数を作成します。1 つはイメージ用、もう 1 つはタイプ用です。タイプがイメージの場合は常に、オブジェクトを jsonimage に追加し、jsontext についても同じです。

       try {
            JSONArray jsonimage = new JSONArray();
            JSONArray jsontext = new JSONArray();
            jsonArray = new JSONArray(result);
            for(int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObj = (JSONObject)jsonArray.get(i); // get the josn object
                if(jsonObj.getString("type").equals("image")) { // compare for the key-value

                    jsonimage.put(jsonObj);
                    k++;

                }
                if(jsonObj.getString("type").equals("text")) { // compare for the key-value
                    jsontext.put(jsonObj);
                    j++;
                }
            }
            Toast.makeText(getApplicationContext(), String.valueOf(k), 2000).show();
            Toast.makeText(getApplicationContext(), String.valueOf(j), 2000).show();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

これがあなたが探しているものであるか、ヒントを与えることを願っています.

編集:

jsonArray を listview に追加するには、hashMap を作成するか、単純に JSONArray の各エントリに対して文字列の String を作成します。

       String sId = new String[jsonimage.length()];
        String sType = new String[jsonimage.length()];
        String sData = new String[jsonimage.length()];
for (int i = 0 ; i < jsonimage.length(); i++)
        {
            JSONObject c = jsonimage.getJSONObject(i);

            String id = c.getString("id");
            String type = c.getString("type");
            String data = c.getString("data");



            sId[i] = id;
            sType[i] = type;
            sData[i] = data;                

        }

次に、JSONArray からデータを取得した後...

3つのテキストビューを保持するカスタムビューがあり、これを追加します

listView.setAdapter(new CustomAdapter(yourClass.this));

生成された String[position] を CustomAdapter の getView に追加するだけです

于 2013-11-09T03:48:36.700 に答える