今天初学习adapter与adapterView。遇到了个问题,报错信息如下:(主要看红色字体)
09-14 20:12:57.904 3335-3335/com.kjgym.adapterlearn E/ArrayAdapter: You must supply a resource ID for a TextView
09-14 20:12:57.904 3335-3335/com.kjgym.adapterlearn D/AndroidRuntime: Shutting down VM
09-14 20:12:57.904 3335-3335/com.kjgym.adapterlearn W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa60d0908)
09-14 20:12:57.904 3335-3335/com.kjgym.adapterlearn E/AndroidRuntime: 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)
..........等等
布局文件中只有一个ListView,
而java文件为
package com.kjgym.adapterlearn;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Adapter;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class AdapterActivity extends AppCompatActivity {
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_adapter);
listView = findViewById(R.id.listView);
listView.setAdapter(setAdapter());
}
public ArrayAdapter setAdapter(){
List<String> strList = new ArrayList<>();
for(int i = 1; i<21; i++){
strList.add("数据源"+i);
}
return new ArrayAdapter<>(this,android.R.layout.activity_list_item,strList);
}
}
解决办法:
第一种解决办法,修改
return new ArrayAdapter<>(this,android.R.layout.activity_list_item,strList);中的android.R.layout.activity_list_item为simple_list_item_1即可。这样不需要按他所说的加一个TextView。
第二种办法,修改
return new ArrayAdapter<>(this,android.R.layout.activity_list_item,strList);
改为:
return new ArrayAdapter<>(this,android.R.layout.activity_list_item,android.R.id.text1,strList);