Android返回两个项目,但只显示一个

时间:2012-08-06 19:17:25

标签: android listview return items

我的代码出了点问题。

我想在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 个答案:

答案 0 :(得分:1)

您只能返回一个对象。一种选择是创建一个包含列表的“Wrapper对象”,并返回该列表。

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

答案 1 :(得分:0)

您无法返回两个值。返回不会那样。返回结束方法并返回一(1)值。对于您正在做的事情,请考虑返回列表的数组(或列表)或使用Bundle。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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