【问题标题】:Trouble with AdapterView and addViewAdapterView 和 addView 出现问题
【发布时间】:2011-02-15 21:30:55
【问题描述】:

我希望下面的类显示一些文本视图/按钮/微调器,以及一个包含解析数据的 ListView。然而,listview/adapter/addview 造成了一些麻烦。 这是我得到的错误:

java.lang.UnsupportedOperationException: addView(View, LayoutParams) 在 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);
    }       
}

我的统计屏幕 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>

xml布局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。

编辑:

好的,我更新了一些文件,但出现运行时异常错误:

您的内容必须有一个 ListView,其属性为 '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 仍然有所有带有文本视图等的线性布局,我从中删除了它:

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

然后我的另外两个布局是一个简单的textview(xmldatarow),和一个listview(xmllayout)。 所以澄清一下,我的 statsscreenlayout 中没有任何列表视图或任何“包含”。

有什么建议吗?谢谢

【问题讨论】:

    标签: android parsing listview adapter android-adapterview


    【解决方案1】:

    您不能将视图直接膨胀到这样的列表视图中。我想您可能正在寻找ListView 的addHeaderView 或addFooterView 方法。请务必在致电setListAdapter 之前致电他们。

    编辑:完整说明:假设您希望statsviewlayout 位于列表顶部:不要将LinearLayout 直接放在ListView 元素中(ListViews 不应该有子元素)。将它放在一个单独的 xml 文件中(例如,statsview.xml)并在你的 onCreate 中执行类似的操作:

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

    还可以看到这个旧的android-beginners post。

    【讨论】:

    • 谢谢,我更新了我的帖子,在那里进行了编辑。你能再看看吗?非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多