我似乎在使用ListView的自定义样式时遇到了问题。
所有在线搜索(stackOverflow和其他网站)都有相同的说法: - 创建一个my_style.xml布局文件。 - 在适配器中使用它。
但由于某些原因,这似乎并不适合我。 MainAct.java:
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.list_content, items);
XML文件:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#0000DD"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
保存为/res/layout/list_content.xml。
如果我使用android.R.layout.simple_list_item_1,一切正常,我得到了自己的xml文件&#34; java.lang.IllegalStateException:ArrayAdapter要求资源ID为TextView&#34;。
有什么想法吗?
PS:我已经看过很多其他类似的问题/问题,包括:"ArrayAdapter requires the resource ID to be a TextView" xml problems
How to set the text at center in ListView android application?
答案 0 :(得分:1)
错误java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
清楚地说明了。您需要传递需要显示数据的textview。此外,当您使用自己的布局时,R.java
应该属于您的项目,而不是android.R
。
更改
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.list_content, items);
到
arrayAdapter = new ArrayAdapter<String>(this, R.layout.list_content, R.id.textview, items);
答案 1 :(得分:1)
问题是因为你传递了错误的参数类型。
看到你的代码后,我可以说你想使用以下版本的ArrayAdapter。
public ArrayAdapter (Context context, int resource, int textViewResourceId, List<T> objects)
因此,根据您提供的代码段,以下内容适用于您。
arrayAdapter = new ArrayAdapter<String>(this, R.layout.list_content, R.id.textview, items);
对于不同版本的arrayAdapter,您可以参考: http://developer.android.com/reference/android/widget/ArrayAdapter.html
答案 2 :(得分:0)
您正在做的是在您的包中声明xml并尝试从android.R.layout
包访问它。
所以,改变
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.list_content, items);
到
arrayAdapter = new ArrayAdapter<String>(this, R.layout.list_content, items);
它会起作用