AdapterView 和 addView 的问题
-
14-11-2019 - |
题
我希望下面的类显示一些文本视图/按钮/旋转器,以及包含解析数据的 ListView。然而 listview/adapter/addview 造成了一些麻烦。这是我收到的错误:
java.lang.UnsupportedOperationException:AdapterView 不支持 addView(View, LayoutParams)
我感觉这与我的 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 是一个简单的文本视图。
编辑:
好的,我更新了一些文件,但出现了运行时异常错误:
您的内容必须有一个属性为“android.R.id.list”的 ListView
这是更新的文件:
班级:
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" />
然后我的另外两个布局是一个简单的文本视图(xmldatarow)和一个列表视图(xmllayout)。所以为了澄清一下,我的统计屏幕布局中没有任何列表视图或任何“包含”。
有什么建议吗?谢谢
解决方案
您不能像这样将视图直接膨胀到列表视图中。我想你可能正在寻找 ListView
的 addHeaderView
或者 addFooterView
方法。致电前请务必先致电他们 setListAdapter
.
编辑:完整地拼写出来:假设你想要 statsviewlayout
在您的列表顶部:不要把 LinearLayout
直接在 ListView
元素 (ListViews
不应该有孩子)。把它放在一个 分离 xml 文件(例如, statsview.xml
)并在 onCreate 中执行类似的操作:
getListView().addHeaderView(View.inflate(this, R.layout.statsview.xml, null));
还看到这个老 android 初学者帖子.