2014-01-18 3 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 cash и т. Д.

Смежные вопросы