0

我的代码有点问题。

我想在 for 循环中获取两个值,但只显示一个。

这是我的代码

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;
}

经过 tom 的一些修改,现在代码的主要部分如下所示。

但我仍然有一些错误

标记“while”的语法错误,删除此标记

items_intro 无法解决

项目无法解决

不知道如何解决这个...

亲切的问候, 帕特里克

4

4 回答 4

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();
        //...
        //other code
        //...
        rv.item = var;
        rv.item_intro = var;

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

您不能返回两个值。退货不是这样的。Return 结束该方法并返回一 (1) 个值。对于您正在做的事情,请考虑返回列表的数组(或列表)或使用 Bundle。

于 2012-08-06T19:20:19.270 回答
0

您可以创建另一个包含对象 items 和items_into的 ArrayList,然后返回这个 2 元素 ArrayList。你会假设 items 是第一个元素, items_into 是第二个元素

于 2012-08-06T19:21:40.807 回答
0

方法只能返回一个值。然而,您可以创建两种不同的方法,一种返回一种类型,另一种返回另一种类型。这样您就可以检索这两个值。

于 2012-08-06T19:23:15.890 回答