2012-07-29 112 views
0

我有具有使用JSON爲什麼它是數組的元素?

try 
{ 
    Thread cThread = new Thread(new getStringContent("http://192.168.0.101/curltest/getcategories.php")); 
    cThread.start();    
} 
catch(Exception ex) 
{ 
    Log.i("YGo", ex.toString()); 
} 

public class getStringContent implements Runnable { 
     String suri; 
     public getStringContent(String uri) 
     { 
      suri = uri; 
     } 
     @Override 
     public void run() {   
      try { 
       JSONArray jsonArray = new JSONArray(getPageContent(suri)); 
       for (int i = 0; i < jsonArray.length(); i++) { 
        JSONArray jsonSArray = jsonArray.getJSONArray(i); 
        categories = new CharSequence[jsonArray.length()]; 
        categories[i] = jsonSArray.getString(0); 
        Log.i("YGo", categories[i].toString()); 
       }    
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       Log.e("YGo", e.toString()); 
      } 
      dialog.dismiss(); 
     }  
    } 

在GUI線程,如果我按一下按鈕下面的變量

static CharSequence[] categories; 

我接收數據的活動,我想顯示接收到的數據:

代替 Data1
for(int i=0; i<categories.length; i++) 
{ 
    Log.i("Ygo", String.valueOf(categories[i])); 
    Log.i("Ygo", String.valueOf(selectedData[i])); 
} 
AlertDialog.Builder builder = new AlertDialog.Builder(PreferencesClass.this); 
      builder.setTitle("Pick categories"); 

      builder.setMultiChoiceItems(categories, selectedData, onClickCatChooser);   
      builder.setPositiveButton("Ok", clickedOnClickCatOk); 

      AlertDialog alert = builder.create(); 
      alert.show(); 

但在categories可變我有null,null,Data3,我只有null。爲什麼?

+0

因爲這是對象數組元素的默認值。 – EJP 2012-07-29 15:19:55

回答

4

categories = new CharSequence[jsonArray.length()]; 

應該是for循環之外。您在循環中每次迭代都重置數據,因此最後只有最後一次操作留下的數據。

+0

是的,我必須出去:),這樣一個小小的錯誤...... – 2012-07-29 11:47:50

1

它可能是因爲數據路徑1 & 2沒有正確定義 try categories = new CharSequence [jsonArray.length()];外循環。

相關問題