2014-11-21 141 views
-2

概述;我需要從List創建一個json以存儲在sqlLite數據庫中。當我嘗試創建json Eclipse時,我得到一個錯誤,即變量List必須是靜態的。如果這個變量變爲靜態,我的應用程序顯示不正確的結果,這不是一件好事。這是我創建JSON的類無法訪問靜態變量android

public class Soluzione { 
    public String durata; 
    public List<Corsa> corse; 

    public Soluzione() { 
     corse = new ArrayList<Corsa>(); 
    } 

    @Override 
    public String toString() { 
     StringBuilder str = new StringBuilder(); 

     for (Corsa corsa : corse) { 
      if (str.length() > 0) 
       str.append('\n'); 
      str.append(corsa.toString()); 
     } 

     return str.toString(); 
    } 
    public static JSONObject CreateJSon(List<Corsa> corse) 
    { 
     JSONObject jObj = new JSONObject(); 
     try 
     { 

      Corsa prima = Soluzione.corse.get(0); 
      Corsa ultima = Soluzione.corse.get(corse.size()-1); 

      jObj.put("oraPartenza", prima.oraPartenza); 
      jObj.put("oraArrivo", ultima.oraArrivo); 
      jObj.put("partenza", prima.partenza); 
      jObj.put("arrivo", ultima.arrivo); 

     } catch (Exception e) { e.printStackTrace(); } 

     return jObj; 
    } 
} 
+2

我很確定,如果你剛剛刪除了'static'並且實際讀取了'static'的含義並且意味着:https://docs.oracle.com/javase/tutorial/java/javaOO/classvars,這將有所幫助。 html – EpicPandaForce 2014-11-21 15:03:26

+0

我知道這意味着什麼,但大概一週我找不到解決方案!所以我在這裏問。 – 2014-11-21 15:18:51

回答

0

它在您的字段corse和您的方法的參數之間不明確創建JSON。

不要讓方法靜態和刪除參數

public JSONObject CreateJSon() 
    { 
     JSONObject jObj = new JSONObject(); 
     try 
     { 

      Corsa prima = Soluzione.corse.get(0); 
      Corsa ultima = Soluzione.corse.get(corse.size()-1); 

      jObj.put("oraPartenza", prima.oraPartenza); 
      jObj.put("oraArrivo", ultima.oraArrivo); 
      jObj.put("partenza", prima.partenza); 
      jObj.put("arrivo", ultima.arrivo); 

     } catch (Exception e) { e.printStackTrace(); } 

     return jObj; 
    } 

編輯:

,所以如果你想保持CreateJSon靜,重命名參數名稱,以避免歧義,則:

Soluzione soluzione = new Soluzione(); 
Soluzione.CreateJSon (soluzione.corse); 

或者你想刪除靜態屬性,你可以刪除參數,你可以這樣做:

Soluzione soluzione = new Soluzione(); 
soluzione.CreateJSon(); 
+0

mmmh .... okok,但從sqLite?而且,我不能讓靜態因爲改變我的結果在列表視圖。 – 2014-11-21 15:18:22

+0

所以不要讓它變成靜態的。爲什麼你的方法需要是靜態的?我編輯了我的答案以適合你的情況。 – 2014-11-21 15:19:37

+0

,因爲數據庫要求我將其設爲靜態。跟着我,如果我使靜態科西嘉,我的結果在列表視圖將全部相同。我將用10行相同的列表查看。這不是我想要的。 – 2014-11-21 15:22:04