gpt4 book ai didi

android - AdapterView 和 addView 的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:16 25 4
gpt4 key购买 nike

我希望下面的类显示一些 TextView /按钮/微调器,以及一个包含已解析数据的 ListView。然而,listview/adapter/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);
}
}

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

编辑:

好吧,我更新了一些文件,但我收到运行时异常错误:

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 仍然有所有带有 TextView 等的线性布局,我从中删除了这个:

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

然后我的其他两个布局是一个简单的 textview(xmldatarow) 和一个 listview(xmllayout)。所以澄清一下,我的统计屏幕布局中没有任何 ListView 或任何“包含”。

有什么建议吗?谢谢

最佳答案

您不能像那样将 View 直接扩展到 ListView 中。我认为您可能正在寻找 ListViewaddHeaderViewaddFooterView 方法。确保在调用 setListAdapter 之前调用它们。

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

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

另见旧android-beginners post .

关于android - AdapterView 和 addView 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5009751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com