我正在创建一种方法来读取数据库中的所有信息并通过微调器查看它,这是我为此功能尝试的代码
public Spinner loadArtist(){
SQLiteDatabase DB = getReadableDatabase();
String[] projection = {
ArtistMaster.Artist.ARTIST_NAME};
Cursor cursor = DB.query(
ArtistMaster.Artist.TABLE_ARTIST,
projection,
null,
null,
null,
null,
null);
Spinner itemIds = new ArrayList<>();
while(cursor.moveToNext()) {
long itemId = cursor.getLong(
cursor.getColumnIndex(ArtistMaster.Artist.ARTIST_NAME));
itemIds.setAdapter(itemId);
}
cursor.close();
return itemIds;
}
但是它在此行Spinner itemIds = new ArrayList<>();
中给我一个错误我应该将其声明为列表而不是微调框吗
itemIds
应定义为ArrayList<Long>
。 Spinner
是UI元素,Spinner
是数据结构。您很可能需要使用某种适配器将数据映射到UI。一个ArrayList
:ArrayList
默认情况下,ArrayAdapter
将在集合中的每个数据对象上调用ArrayAdapter
。
Spinner spinner = ... // findViewById, new Spinner() etc.
ArrayList<Long> itemIds = new ArrayList<>();
//... fill array with artist IDs
spinner.setAdapter(
new ArrayAdapter(
this, // Context, Activity etc.,
android.R.layout.simple_list_item_1, // Spinner TextView item resource ID
itemIds // Data set.
));
是,一个简单但仍非常灵活的适配器,可与游标一起使用。
唯一的问题是游标适配器需要一个特定的列名
_ id(ArrayAdapter
解析为该列名(如下所述)。
Object#toString()
在活动的
- onCreate
具有方法
BaseColumns._ID
使用]覆盖活动的onResume(返回活动时刷新微调器,因为基础数据可能已更改)和onDestroy(关闭Cursor)方法。
Cursor mCursor;
SimpleCursorAdapter mAdapter;
Spinner spinner;
SQLiteDatabase db;