0

コードに少し問題がありました。

for ループ内で 2 つの値を取得したいのですが、1 つしか表示されません。

これが私のコードです

public class ReturnValue
{
    public String item;
    public String item_intro;
}



public ArrayList<ReturnValue> populate() {
    ArrayList<ReturnValue> returnValues = new ArrayList<ReturnValue>();

    while {
        ReturnValue rv = new ReturnValue();

    try {
        URL url = new URL
        ("http://www.wvvzondag2.nl/android/fillverslag.php");
        HttpURLConnection urlConnection =
            (HttpURLConnection) url.openConnection();
        urlConnection.setRequestMethod("GET");
        urlConnection.connect();
        // gets the server json data
        BufferedReader bufferedReader =
            new BufferedReader(new InputStreamReader(
                    urlConnection.getInputStream()));
        String next;

        //While loop to go through the query until reached the end
        while ((next = bufferedReader.readLine()) != null){
            JSONArray ja = new JSONArray(next);

            for (int i = 0; i < ja.length(); i++) {
                String var = "";
                String var_intro = "";
                JSONObject jo = (JSONObject) ja.get(i);
                var = jo.getString("title");
                var_intro = jo.getString("introtext");
                items_intro.add(var_intro);
                items.add(var);
                }
        }
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    rv.item = var;
    rv.item_intro = var_intro;

    returnValues.add(rv);
}
return returnValues;
}

トムからのいくつかの変更の後、コードの主要部分は次のようになります。

しかし、私はまだいくつかのエラーが発生しました

トークン "while" の構文エラーです。このトークンを削除してください

items_intro を解決できません

アイテムを解決できません

これを修正する方法がわかりません...

敬具、パトリック

4

4 に答える 4

1

返せるオブジェクトは 1 つだけです。1 つのオプションは、リストを含む「ラッパー オブジェクト」を作成し、それを返すことです。

public class ReturnValue
{
    public String item;
    public String item_intro;
}

次に、populate メソッドで次のようにします。

public ArrayList<ReturnValue> populate() {
    ArrayList<ReturnValue> returnValues = new ArrayList<ReturnValue>();

    while {
        ReturnValue rv = new ReturnValue();
        //...
        //other code
        //...
        rv.item = var;
        rv.item_intro = var;

        returnValues.add(rv);
    }
    return returnValues;
}
于 2012-08-06T19:22:24.237 に答える
0

2 つの値を返すことはできません。リターンはそのようには機能しません。Return はメソッドを終了し、1 つの値を返します。あなたがしていることについては、リストの配列(またはリスト)を返すか、バンドルを使用することを検討してください。

于 2012-08-06T19:20:19.270 に答える
0

メソッドは 1 つの値のみを返すことができます。ただし、2 つの異なるメソッドを作成することもできます。1 つは一方の型を返し、もう 1 つは他方の型を返します。このようにして、両方の値を取得できます。

于 2012-08-06T19:23:15.890 に答える
0

オブジェクト items とitems_intoを含む別の ArrayList を作成し、この 2 要素の ArrayList を返すことができます。items が最初の要素で、items_into が 2 番目の要素であると仮定します。

于 2012-08-06T19:21:40.807 に答える