mmm*_*eys 7 parsing android listview adapter android-adapterview
我希望下面的类显示一些textview/buttons/spinners,以及包含已解析数据的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);
}
}
Run Code Online (Sandbox Code Playgroud)
我的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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我的statsscreenlayout stil包含所有带有textviews等的linearlayout,我从中删除了它:
<include layout="@layout/xmllayout" android:id="@+id/xmllist" />
Run Code Online (Sandbox Code Playgroud)
然后我的另外两个布局是一个简单的textview(xmldatarow)和一个listview(xmllayout).所以只是为了澄清,我的statsscreenlayout中没有任何列表视图或任何"包含".
有什么建议?谢谢
Yon*_*lan 11
您无法将视图直接扩展到类似的列表视图中.我想你可能会寻找ListView的addHeaderView或addFooterView方法.请务必在致电前给他们打电话setListAdapter.
编辑:完全拼写:假设你想要statsviewlayout在列表的顶部:不要LinearLayout直接放在ListView元素中(ListViews不应该有孩子).把它放在一个单独的 xml文件中(比如说statsview.xml),并在你的onCreate中做这样的事情:
getListView().addHeaderView(View.inflate(this, R.layout.statsview.xml, null));
Run Code Online (Sandbox Code Playgroud)
另见这款旧的android-beginners帖子.
| 归档时间: |
|
| 查看次数: |
11545 次 |
| 最近记录: |