第一个列表项是随机更改的

时间:2014-01-18 19:25:09

标签: android sqlite

我遇到了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;
}

2 个答案:

答案 0 :(得分:0)

看起来像是ArrayAdapter中的一个错误。您可以创建自定义适配器并使其正确。

答案 1 :(得分:0)

正确设置列表视图。删除动画替换,可撤销现金等。