2010-04-18 78 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

相关问题