2010-04-18 71 views
0

我想我以前的問題還不夠清楚(Android: failed to setContentView when switching to ListActivity),所以我解釋如下。android:在兩個listactivities中有兩個listviews沒有工作

在我的應用我有一個使用兩種不同的列表視圖2個listactivities:

public class Activity1 extends ListActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    try{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.listview1); 
} 
public class Activity2 extends ListActivity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    try{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.listview2); 
} 

}

所要求的機器人,列表視圖必須有一個ID而這正是 「@android:ID /列表」 。如果我使用相同的ID在listview1和listview2中設置了listview,那麼他們最終會使用相同格式的listview,這不是我想要的。但是,如果我將其中一個ID設置爲「@ + id/listview2」,則android給了我錯誤: java.lang.RuntimeException:您的內容必須具有List屬性爲'android.R.id的ListView。列表'

我該如何處理這種困境?

BTW:我的列表視圖是有點複雜,圖像圖標和文本customed名單,所以在我的代碼,我也延長了ListAdapter:

this.mListAdapter = new myListAdapter(this, 
      R.layout.listview1, mTiebaInfo); 
    setListAdapter(this.mListAdapter); 

回答

1

不要使用ListActivities。使用活動並在每個xml中都有一個ListView,您可以根據需要命名。

+0

你能不能更加健康?我使用ListView的原因是因爲我的列表很複雜,而且我還擴展了ListAdapter。 – Yang 2010-04-18 21:26:22

+0

複雜性應該與它無關。您可以擴展'BaseAdapter'並覆蓋getView(),就像您以前顯示的那樣返回任何您想要的視圖。然後簡單地獲得對您定義的ListView的引用,並通過調用setAdapter(adapter)將其適配器設置爲您的自定義適配器。 – jqpubliq 2010-04-18 21:34:03

+0

我不知道你在說什麼。我已經擴展了基於ListAdapter的適配器。事情是,如果我不擴展ListActivity,我將無法調用setListAdapter()。如果我只按照你所說的擴展Activity和setAdapter(),我怎麼能把它列爲一個列表? – Yang 2010-04-18 21:59:12