2016-02-09 39 views
0

我似乎有使用ListView自定义样式的问题。“ArrayAdapter需要资源ID是一个TextView”问题

所有的在线搜索(stackOverflow和其他网站)pty多半说: - 创建一个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文件,我得到“java.lang.IllegalStateException:ArrayAdapter需要资源ID是一个TextView”。

任何想法?

PS:我已经看了很多其他非常类似的问题/问题,其中包括:

"ArrayAdapter requires the resource ID to be a TextView" xml problems

How to set the text at center in ListView android application?

Android ListView Text Color

回答

1

由于错误java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a 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); 
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); 

它会工作

+0

我有第二次,仍然没有工作......如果我的名单。xml文件包含2个textview我需要将它们全部传递给我的arrayAdapter吗?谢谢 – miatech

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

相关问题