2012-08-06 70 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

方法只能返回一個值。然而你可以創建兩種不同的方法,一種返回一種類型,另一種返回另一種類型。這樣你可以檢索兩個值。

相關問題