java ListView在安卓活动中不工作,并引发textView缺少资源ID错误
我是安卓开发新手,尝试在我的简单应用程序中使用ListView。但它不起作用,而且会抛出错误
下面是显示消息活动的代码。java。我已经创建了一个字符串数组并手动输入值。我使用我们称之为自定义适配器的方法调用资源ID
package com.example.myfirstapp;
import 安卓.content.Intent;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.os.Bundle;
import 安卓.widget.ArrayAdapter;
import 安卓.widget.ListView;
import 安卓.widget.TextView;
import java.util.List;
public class DisplayMessageActivity extends AppCompatActivity {
String[] mobileArray={"A", "B"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
Intent intent=getIntent();
String message=intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView=(TextView) findViewById(R.id.textView);
textView.setText(message);
System.out.println("seq");
ArrayAdapter adapter=new ArrayAdapter<String>(this, R.layout.activity_display_message, R.id.listView, mobileArray);
System.out.println("seq2");
ListView listView=(ListView) findViewById(R.id.listView);
System.out.println("seq3");
listView.setAdapter(adapter);
System.out.println("seq44");
}
}
活动显示消息的XML。xml位于我创建一个ListView的下方
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:paddingBottom="@dimen/activity_vertical_margin"
安卓:paddingLeft="@dimen/activity_horizontal_margin"
安卓:paddingRight="@dimen/activity_horizontal_margin"
安卓:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.myfirstapp.DisplayMessageActivity">
<TextView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:text="New Text"
安卓:id="@+id/textView"
安卓:layout_alignParentTop="true"
安卓:layout_centerHorizontal="true" />
<ListView
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:id="@+id/listView"
/>
</RelativeLayout>
错误日志
09-06 15:00:43.859 3751-3751/? E/ArrayAdapter: You must supply a resource ID for a TextView
09-06 15:00:43.859 3751-3751/? D/AndroidRuntime: Shutting down VM
09-06 15:00:43.860 3751-3751/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myfirstapp, PID: 3751
java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
at 安卓.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:393)
at 安卓.widget.ArrayAdapter.getView(ArrayAdapter.java:369)
at 安卓.widget.AbsListView.obtainView(AbsListView.java:2346)
at 安卓.widget.ListView.measureHeightOfChildren(ListView.java:1280)
at 安卓.widget.ListView.onMeasure(ListView.java:1188)
at 安卓.view.View.measure(View.java:18788)
at 安卓.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at 安卓.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at 安卓.view.View.measure(View.java:18788)
at 安卓.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at 安卓.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at 安卓.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
at 安卓.view.View.measure(View.java:18788)
at 安卓.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at 安卓.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:391)
at 安卓.view.View.measure(View.java:18788)
at 安卓.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at 安卓.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at 安卓.view.View.measure(View.java:18788)
at 安卓.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at 安卓.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at 安卓.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at 安卓.widget.LinearLayout.onMeasure(LinearLayout.java:630)
at 安卓.view.View.measure(View.java:18788)
at 安卓.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at 安卓.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.安卓.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
at 安卓.view.View.measure(View.java:18788)
at 安卓.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100)
at 安卓.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216)
at 安卓.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452)
at 安卓.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at 安卓.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
at 安卓.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at 安卓.view.Choreographer.doCallbacks(Choreographer.java:670)
at 安卓.view.Choreographer.doFrame(Choreographer.java:606)
at 安卓.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at 安卓.os.Handler.handleCallback(Handler.java:739)
at 安卓.os.Handler.dispatchMessage(Handler.java:95)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassCastException: 安卓.widget.ListView cannot be cast to 安卓.widget.TextView
at 安卓.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:389)
at 安卓.widget.ArrayAdapter.getView(ArrayAdapter.java:369)
at 安卓.widget.AbsListView.obtainView(AbsListView.java:2346)
at 安卓.widget.ListView.measureHeightOfChildren(ListView.java:1280)
at 安卓.widget.ListView.onMeasure(ListView.java:1188)
at 安卓.view.View.measure(View.java:18788)
at 安卓.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at 安卓.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at 安卓.view.View.measure(View.java:18788)
at 安卓.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at 安卓.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at 安卓.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
at 安卓.view.View.measure(View.java:18788)
at 安卓.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at 安卓.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:391)
at 安卓.view.View.measure(View.java:18788)
at 安卓.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at 安卓.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at 安卓.view.View.measure(View.java:18788)
at 安卓.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at 安卓.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
at 安卓.widget.LinearLayout.measureVertical(LinearLayout.java:748)
at 安卓.widget.LinearLayout.onMeasure(LinearLayout.java:630)
at 安卓.view.View.measure(View.java:18788)
at 安卓.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
at 安卓.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.安卓.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
at 安卓.view.View.measure(View.java:18788)
at 安卓.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100)
at 安卓.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216)
at 安卓.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452)
at 安卓.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at 安卓.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
at 安卓.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at 安卓.view.Choreographer.doCallbacks(Choreographer.java:670)
at 安卓.view.Choreographer.doFrame(Choreographer.java:606)
at 安卓.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at 安卓.os.Handler.handleCallback(Handler.java:739)
at 安卓.os.Handler.dispatchMessage(Handler.java:95)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:616)
# 1 楼答案
要做到这一点,您只需要像下面这样编辑适配器
如果您对此解决方案有任何疑问,请告诉我
# 2 楼答案
像这样为lite视图行项目创建新布局
列出项目类型1。xml:
然后像这样创建适配器类
check this listview demo
然后将适配器设置到listview
# 3 楼答案
请仔细阅读stacktrace的内容:
爪哇。lang.IllegalStateException:ArrayAdapter要求资源ID为TextView
在代码中,您试图在此处传递listView,它应该是TextView的实例
ArrayAdapter=新的ArrayAdapter(此,R.layout.activity\u display\u消息,R.id.listView,mobileArray)