2014-02-09 4 views
0

Когда я прокомментирую код для «nameAdapter = ...» или «numAdapter = ...», а оставшийся без раскола он отобразит данные в режиме списка. Таким образом, он может отображаться как по отдельности, однако, когда я оставляю без комментариев, он будет отображать только данные, связанные с numAdapter. Вероятно, простая ошибка, но я не могу понять, где я ошибся.Проблема с адаптером ListView

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.player); 

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

    new Logo().execute(); 
    new statistics().execute(); 
    nameAdapter = new ArrayAdapter<String>(this, R.layout.simple_list_item_1, R.id.stat_name,statName); 
    numAdapter = new ArrayAdapter<String>(this, R.layout.simple_list_item_1, R.id.stat_number,statNum); 

} 

private class statistics extends AsyncTask<String, Void, String> { 
    //final ListView listview = (ListView) findViewById(R.id.listView); 
    /*String[] values = new String[]{ "Ball Control", "Crossing", "Curve", 
      "Dribbling", "Finishing", "Free Kick Accuracy", "Heading Accuracy", "Long Passing", 
      "Long Shots", "Marking", "Penalties", "Short Passing", "Shot Power", "Sliding Tackle", 
      "Standing Tackle", "Volleys"};*/ 
    //String[] stats = new String[16]; 
    @Override 
    protected String doInBackground(String... arg) { 
     Document document; 
     try { 
      document = Jsoup.connect(url).get(); 
      num = document.select("div#stats-base p"); 
      statNum.clear(); 
      for (Element element : num) { 
       statNum.add(element.ownText()); 
      } 
      name = document.select("div#stats-base span"); 
      statName.clear(); 
      for (Element element : name) { 
       statName.add(element.ownText()); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 

    } 
    @Override 
    protected void onPostExecute(String result) { 

     lv.setAdapter(nameAdapter); 
     lv.setAdapter(numAdapter); 
    } 
} 

player.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/playerPic" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 

<ListView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/listView" 
    android:layout_below="@+id/playerPic" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="104dp"/> 
</RelativeLayout> 

simple_list_item_1.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TextView android:id="@+id/stat_name" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dip" 
    android:textSize="16dip" 
    android:textStyle="bold"/> 

<TextView 
    android:id="@+id/stat_number" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dip" 
    android:textSize="16dip" 
    android:textStyle="bold" 
    android:layout_below="@id/stat_name"/> 


</LinearLayout> 
+0

Я думаю, что в этом поведении нет мистерий. Последним адаптером, установленным для 'lv', является тот, который выживает. – nKn

+0

Как я могу установить stat_name и stat_num в том же списке? – user3286057

+0

Добавлен ответ за то, что вы пытаетесь сделать. – nKn

ответ

0

Я думаю, что нет никакой тайны в том, что поведение. Последний адаптер, который вы установили в lv, является тем, который выживает.

Если вы хотите добавить как statName, так и statNum, я бы установил один из них, а затем использовал .addAll(...) с другой. Например:

lv = lv.setAdapter(nameAdapter); 
lv.addAll(statNum); 
nameAdapter.notifyDataSetChanged(); 

Не забудьте последнюю строку, чтобы ваши ListView делают новые данные.

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