2011-02-15 64 views
7

我希望下面的类能够显示一些textviews/buttons/spinners,还有一个包含解析数据的ListView。然而,列表视图/适配器/ addview正在造成一些麻烦。 继承人的错误我得到:AdapterView和addView问题

java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView

我感觉它与我的XML文件做的,但是我也不太清楚。 这里是我的代码:

public class StatisticsScreen extends ListActivity{ 

private List<Message> messages; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.statisticsscreen); 

    loadFeed(); 

    //other textviews and listeners added 
} 

private void loadFeed() { 

    try{ 
     BaseFeedParser parser = new BaseFeedParser(); 
     messages = parser.parse(); 
     List<String> titles = new ArrayList<String>(messages.size()); 
     for (Message msg : messages){ 
      titles.add(msg.getTitle()); 
     } 
     ArrayAdapter<String> adapter = 
     new ArrayAdapter<String>(this, R.layout.xmldatarow,titles); 

     this.setListAdapter(adapter);   
    } catch (Throwable t){ 
     Log.e("AndroidNews",t.getMessage(),t); 
    }  
} 

我statisticsscreen XML:

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="fill_parent"> 

<LinearLayout android:id="@+id/statsviewlayout" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:background="@color/black"> 
    //other layouts/textviews/buttons added 
    <include layout="@layout/xmllayout" android:id="@+id/xmllist" /> 

</LinearLayout> 
</ListView> 

xmllayout XML:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <ListView android:id="@+id/xmllist" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 
    </LinearLayout> 

xmldatarow是一个简单的TextView。

编辑:

好了,所以香港专业教育学院的一些文件的更新,我得到一个运行时异常错误:

Your content must have a ListView whose attribute is 'android.R.id.list'

这里有更新的文件:

类:

setContentView(R.layout.statisticsscreen);  
loadFeed();   
getListView().addHeaderView(View.inflate(this, R.layout.xmllayout, null)); 

private void loadFeed() { 
    try{ 
     BaseFeedParser parser = new BaseFeedParser(); 
     messages = parser.parse(); 
     List<String> titles = new ArrayList<String>(messages.size()); 
     for (Message msg : messages){ 
      titles.add(msg.getDate()); 
     } 
     ArrayAdapter<String> adapter = 
      new ArrayAdapter<String>(this, R.layout.xmldatarow,titles); 
     this.setListAdapter(adapter); 
    } catch (Throwable t){ 
     Log.e("AndroidNews",t.getMessage(),t); 
    }  
} 

我的statsscreenlayout stil ha一切都与textviews等linearlayouts的,我删除了这个如此:

<include layout="@layout/xmllayout" android:id="@+id/xmllist" /> 

然后我的另外两个布局一个简单的TextView(xmldatarow),和一个ListView(xmllayout)。 只是为了澄清,我的statsscreenlayout中没有任何listview或任何'include'。

有什么建议吗?谢谢

回答

11

你不能直接膨胀视图到像这样的列表视图。我想你可能正在寻找ListViewaddHeaderViewaddFooterView方法。确保在致电setListAdapter之前给他们打电话。

编辑:为了完全拼出来:假设你在你的列表的顶部想statsviewlayout:不要把LinearLayout直接在ListView元素(ListViews不应该有孩子)。把它放在一个单独的XML文件(比如说,statsview.xml),做这样的事情在你的onCreate:

getListView().addHeaderView(View.inflate(this, R.layout.statsview.xml, null)); 

也看到这个老android-beginners post

+0

请问您可以扩展一下吗?谢谢 – mmmbaileys 2011-02-15 23:42:44