ArrayAdapter требует, чтобы идентификатор ресурса был исключением TextView XML , что означает, что вы не предоставляете то, что ожидает ArrayAdapter
. Когда вы используете этот конструктор:
new ArrayAdapter<String>(this, R.layout.a_layout_file, this.file)
R.Layout.a_layout_file
должен быть идентификатором XML-файла макета, содержащего только TextView
(TextView
не может быть перенесен на другой макет, например LinearLayout
, RelativeLayout
и т.д!), примерно так:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
// other attributes of the TextView
/>
Если вы хотите, чтобы ваш макет строки списка был немного другим, тогда простой TextView
виджет использует этот конструктор:
new ArrayAdapter<String>(this, R.layout.a_layout_file,
R.id.the_id_of_a_textview_from_the_layout, this.file)
, где вы предоставляете id
макета, который может содержать различные представления, но также должен содержать TextView
с и id
(третий параметр), который вы передаете в ArrayAdapter
чтобы он мог знать, куда поместить Strings
в макете строки.