2014-01-18 76 views
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; 
} 
+0

类似的症状通常是由自定义适配器'getView()'中的错误引起的,但由于您使用的是不是这种情况的库存'ArrayAdapter'。你可以发布'song_item'布局吗? – laalto

+0

@laalto我只是这第二次意识到这是因为我的SQLite表中的空值。我重新创建了表格,并确保没有添加空值,并且它似乎已经工作。我无法回答我的问题再过8个小时,所以我想我会在这里发帖。 – user184994

回答

0

看起来像ArrayAdapter中的错误。您可以创建自定义适配器并正确设置。

0

正确设置您的列表视图。删除动画更改,ddrawable现金等