2014-02-09 120 views
0

當我註釋掉「nameAdapter = ...」或「numAdapter = ...」的代碼並且留下另一個未註釋的代碼時,它將在listview罰款顯示數據。因此,它可以單獨顯示,但是,如果我不留下注釋,它將只顯示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在同一個listview中設置呢? – user3286057

+0

爲你正在嘗試做的事添加了一個答案。 – nKn

回答

0

我認爲有在行爲沒有什麼神祕的。您設置爲lv的最後一個適配器是可以存活的最後一個適配器。

如果你正在尋找的是要添加statNamestatNum,我會設置其中之一,然後在另一個使用.addAll(...)。例如:

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

不要忘記最後一行,讓您的ListView呈現新的數據。