2014-02-14 16 views
1

我的情況是這樣的:相關數據和ListView在Android的

在我看來Highscore_zeigen從來就得到了我想要展示的ArrayList<Rangliste>。整個事件在嘗試從URL獲取JSON數據的線程的onPostExecute中。

ArrayList<String> gewinnernamen = new ArrayList<String>(); 
    ArrayList<String> gewinnerdatum = new ArrayList<String>(); 
    Rangliste r = new Rangliste("",""); 
    ArrayList<Rangliste> rangliste = new ArrayList<Rangliste>(); 

....

@Override 
     protected void onPostExecute(String result) { 
      // TODO Auto-generated method stub 

      if(isOnline() == true){ 


      System.out.println("HIHIHIHIHHIHI " +result); 
      super.onPostExecute(result); 
      JSONArray jsonarray = null; 
      try { 
       jsonarray = new JSONArray(result); 
      } catch (JSONException e) { 
       Toast.makeText(Highscore_zeigen.this, "Ups! Bitte überprüfe deine Netzwerkverbindung! ", Toast.LENGTH_SHORT).show(); 
       e.printStackTrace(); 
      } 




      String namest = ""; 
      String datumst =""; 
      try { 
       jb = (JSONObject) jsonarray.getJSONObject(0); 
      } catch (JSONException e2) { 
       // TODO Auto-generated catch block 
       e2.printStackTrace(); 
      } 
      for(int i = 0; i <5;i++){ 

       try { 
        jb = (JSONObject) jsonarray.getJSONObject(i); 

       } catch (JSONException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       try { 
        namest = jb.getString("name"); 
        datumst = jb.getString("datum"); 
       } catch (JSONException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       gewinnernamen.add(i, namest); 
       gewinnerdatum.add(i, datumst); 





       adapter.notifyDataSetChanged(); 
      } 


      for(int is = 0; is<5; is++){ 
       r = new Rangliste(gewinnernamen.get(is), gewinnerdatum.get(is)); 
       rangliste.add(r); 
      } 

所以我想顯示的數據現在在rangliste。一切正常,但我不知道如何顯示我的數據在我的ListView。 ListView控件是Highscore_zeigen的佈局文件,我也有一個佈局爲我行:

<ListView 
    android:id="@+id/lvGewinner" 
    android:paddingTop="40dp" 
    android:paddingLeft="20dp" 
    android:paddingBottom="30dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" > 

</ListView> 

這裏是我的佈局:

<TextView 
    android:id="@+id/name" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:textStyle="bold" 
    /> 

<TextView 
    android:id="@+id/dist" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:textSize="8dp" 
    android:textStyle="italic"/> 

所以我有數據,我有一個ListView,我也有我的ListView的佈局。我不知道的是如何連接這三件事情,以便數據顯示在我的ListView中。

+1

所以你只是想在屏幕上列表中顯示您的數據? –

+0

在屏幕上顯示給定的佈局列表.. – user896692

回答

1

您需要使用R.android.two_line_list_item,如下面的鏈接所述。 有鏈接到示例,但第二個答案解釋得很好。

can any one provide me example of Two_line_list_item in Android?

編輯:

我會做到這一點,我會創造向全班訪問ListView控件的引用(即到的AsyncTask)。然後在onPostExecute():

lv = (ListView) findViewById(R.id.lvGewinner); 

    try { 
     for(int i = 0; i <5;i++){ 
      ... 
      namest = jb.getString("name"); 
      datumst = jb.getString("datum"); 
      ... 
      Rangliste[] ... // create your array 
      ... 
     } 
     lv.setAdapter(new RanglisteArrayAdapter(this, rangliste); 

    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

,你可能需要將JSON轉換成數組 這裏是你的addapter:

public class RanglisteArrayAdapter extends TwoLineArrayAdapter<Rangliste> { 
    public RanglisteArrayAdapter(Context context, Rangliste[] rangliste) { 
     super(context, rangliste); 
    } 

    @Override 
    public String lineOneText(Rangliste r) { 
     return r.namest; 
    } 

    @Override 
    public String lineTwoText(Rngliste r) { 
     return r.datumst; 
    } 
} 
+0

對不起,但我不知道在哪裏調用此SimpleAdapter代碼。你可以給我一個例子嗎? – user896692

+0

什麼是YourAddapter?有很多例子,我真的失去了概述抱歉+ ... – user896692