0
我遇到了Android ArrayAdapter
的问题。列表中的第一项不按字母顺序排列。如果向下滚动并向上滚动,它将更改为不同的列表项。第一个列表项随机变化
为什么列表不起作用?
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
SQLHelper helper = new SQLHelper(getActivity());
SQLiteDatabase db = helper.getWritableDatabase();
View rootView = inflater.inflate(R.layout.song_selector_listview,
container, false);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
R.layout.song_item, listArtists(db));
setListAdapter(adapter);
return rootView;
}
public List<String> listArtists(SQLiteDatabase db) {
List<String> artists = new ArrayList<String>();
Cursor cursor = db.rawQuery("SELECT DISTINCT "
+ SQLHelper.artistCol
+ " FROM "
+ SQLHelper.libraryTable
+ " ORDER BY "
+ SQLHelper.artistCol,
null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
int artistIndex = cursor.getColumnIndex(SQLHelper.artistCol);
artists.add(cursor.getString(artistIndex));
cursor.moveToNext();
}
return artists;
}
类似的症状通常是由自定义适配器'getView()'中的错误引起的,但由于您使用的是不是这种情况的库存'ArrayAdapter'。你可以发布'song_item'布局吗? – laalto
@laalto我只是这第二次意识到这是因为我的SQLite表中的空值。我重新创建了表格,并确保没有添加空值,并且它似乎已经工作。我无法回答我的问题再过8个小时,所以我想我会在这里发帖。 – user184994