Android的ListView的麻烦 [英] Android listview trouble
问题描述
我在尝试运行它实现一个ListView一个Android活动的相关问题,与20个元素填充它,并将其显示:在推出活动崩溃
下面是相关LogCat中的错误:
您必须提供的资源ID为一个TextView
致命异常:主要
java.lang.IllegalStateException:ArrayAdapter需要的资源ID是一个TextView
在android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386)
在android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
在android.widget.AbsListView.obtainView(AbsListView.java:2177)
在android.widget.ListView.measureHeightOfChildren(ListView.java:1247)
在android.widget.ListView.onMeasure(ListView.java:15848)
在android.widget.RelativeLayout.measureChild(RelativeLayout.java:698)
在android.widget.RelativeLayout.onMeasure(ListView.java:1159)
在android.view.View.measure(View.java:15848)
在android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
在android.app.ActivityThread.main(ActivityThread.java:5013)
java.lang.ClassCastException:引起android.widget.ListView不能转换为android.widget.TextView。
在android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:382)
ThirdActivity.java
包com.example.logger;进口android.os.Bundle;
进口android.app.Activity;
进口android.app.ListActivity;
进口android.view.Menu;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.ArrayAdapter;
进口android.widget.Button;
进口android.widget.ListView;公共类ThirdActivity扩展ListActivity实现OnClickListener { @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_third);
最终的ListView列表视图=(ListView控件)findViewById(android.R.id.list);
的String []值=新的String [] {一,二,三,四有,五个一,六个一,七,八,九,十大
十一,十二,十三,十四,十五,十六,十七,十八,古诗十九首,
二十};
ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(这一点,R.layout.activity_third,android.R.id.list,价值观);
setListAdapter(适配器);
} @覆盖
公共布尔onCreateOptionsMenu(菜单菜单){
//充气菜单;如果是present这增加了项目操作栏。
。getMenuInflater()膨胀(R.menu.third,菜单);
返回true; } 公共无效attachButton()
{
findViewById(R.id.add).setOnClickListener(本); } @覆盖
公共无效的onClick(视图v){
// TODO自动生成方法存根 }
}
结束的.java
和布局:
Activity_third.xml
<的RelativeLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:paddingBottom会=@扪/ activity_vertical_margin
机器人:paddingLeft =@扪/ activity_horizontal_margin
机器人:paddingRight =@扪/ activity_horizontal_margin
机器人:paddingTop =@扪/ activity_vertical_margin
工具:上下文=ThirdActivity。> <按钮
机器人:ID =@ + ID /加
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:layout_alignParentTop =真
机器人:文字=@字符串/加
/> < ListView控件
机器人:ID =@机器人:ID /列表
机器人:layout_width =match_parent
机器人:layout_below =@ + ID /加
机器人:layout_height =WRAP_CONTENT >< /&的ListView GT;< / RelativeLayout的>
结束的.xml
你能告诉我什么,我需要改变,以得到它的基础上,LogCat中错误日志的工作?
非常感谢你的帮助。
此致
毛罗。
ArrayAdapter
要求的资源ID是一个的TextView
块引用>这只是意味着,你必须提供一个
的TextView
的布局作为参数。适配器将这个的TextView
绑定到您的数据。但是,你正在传递你的布局与的ListView
在里面。所以更改此:
ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(这一点,R.layout.activity_third,android.R.id.list,价值观);
这样:
ArrayAdapter<串GT;适配器=新ArrayAdapter<串GT;(这一点,android.R.layout.simple_list_item_1,价值观);
I'm having problems trying to run an Android activity which implements a ListView, fills it with 20 elements and displays it: the activity crashes upon launch.
Here are the relevant LogCat errors:
You must supply a resource ID for a TextView FATAL EXCEPTION: main java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386) at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362) at android.widget.AbsListView.obtainView(AbsListView.java:2177) at android.widget.ListView.measureHeightOfChildren(ListView.java:1247) at android.widget.ListView.onMeasure(ListView.java:15848) at android.widget.RelativeLayout.measureChild(RelativeLayout.java:698) at android.widget.RelativeLayout.onMeasure(ListView.java:1159) at android.view.View.measure(View.java:15848) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012) at android.app.ActivityThread.main(ActivityThread.java:5013) Caused by: java.lang.ClassCastException: android.widget.ListView cannot be cast to android.widget.TextView. at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:382)
ThirdActivity.java
package com.example.logger; import android.os.Bundle; import android.app.Activity; import android.app.ListActivity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; public class ThirdActivity extends ListActivity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_third); final ListView listview = (ListView) findViewById(android.R.id.list); String[] values = new String[] {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen", "Twenty"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_third, android.R.id.list, values); setListAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.third, menu); return true; } public void attachButton() { findViewById(R.id.add).setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub } }
End .java
And the layout:
Activity_third.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".ThirdActivity" > <Button android:id="@+id/add" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:text="@string/add" /> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_below="@+id/add" android:layout_height="wrap_content" ></ListView> </RelativeLayout>
End .xml
Could you please tell me what I need to change to get it to work based on the LogCat error logs?
Thank you very much for your help.
Yours sincerely,
Mauro.
解决方案
ArrayAdapter
requires the resource ID to be aTextView
This just means, that you have to supply a layout with a
TextView
as an argument. The Adapter will bind thisTextView
to your data. But you are currently passing in your layout with yourListView
in it.So change this:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_third, android.R.id.list, values);
to this:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values);
这篇关于Android的ListView的麻烦的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!