2012-08-06 35 views
0

我的代码有点问题。Android返回两个项目,但只显示一个

我想在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; 
} 

汤姆一些修改后,现在该代码的主要部分看起来是这样的。

但我仍然有一些错误

令牌“而”删除

语法错误此令牌

items_intro不能得到解决

项目不能得到解决

不知道怎么修复此...

亲切的问候, 帕特里克

+1

首先,你只能返回一个对象。如果你想返回两个阵列,你必须用它们两个创建一个对象,但是......为什么你有两个相同的变量(items和items_intro),你为什么要返回这两个变量? – luanjot 2012-08-06 19:21:41

+1

@luanjot我怀疑在内部循环中有一个输入错误,他打算执行'items_intro.add(var_intro2)'。所以这两个ArrayLists会有所不同。 – Izkata 2012-08-06 19:23:42

回答

0

您不能返回两个值。返回不起作用。返回结束方法并返回一个(1)值。对于你在做什么,考虑返回一个列表的数组(或列表)或使用一个Bundle。

0

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

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

感谢您的快速回复 我试图you're方式,但it's给我的短信.. 类型不匹配:不能从VerslagJSONParser.ReturnValue转换为ArrayList的 2012-08-06 19:35:52

+0

单程证,是我不好,我编辑我的代码。 populate方法应该返回,而不是ArrayList的 Tom 2012-08-06 19:41:34

+0

返回值现在,我在setListAdapter 构造ArrayAdapter了在OnCreate一个错误(VerslagJSONParser,INT,VerslagJSONParser.ReturnValue)是未定义 – 2012-08-06 19:51:39

0

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

相关问题