2014-02-14 2 views
1

Моя ситуация такова:Соотнесите данные и ListView в Android

На мой взгляд Highscore_zeigen I've получил ArrayList<Rangliste>, что я хочу показать. Все дело в onPostExecute потока, который пытается получить данные JSON из URL.

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?

EDIT:

Как я хотел бы сделать это, я хотел бы создать ссылку на 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

Смежные вопросы