2010-09-14 2 views
3

У меня возникла странная проблема. У меня есть ArrayAdapter, который я сортирую. Это отображается правильно на моем экране, однако, когда я проверяю фактический источник данных, содержимое не сортируется. Как я могу убедиться, что сортировка моего ListAdapter также будет сортировать мой источник данных?Сортировка моего ArrayAdapter не меняет источник данных

Collections.sort(quotes, new PercentChangeComparator()); //sort my data source (this isn't necessary) 
quotesAdapter.sort(new PercentChangeComparator()); //sort my ListAdapter 
Toast toast = Toast.makeText(getApplicationContext(),quotes.get(0).getSymbol(), Toast.LENGTH_SHORT); 
toast.show(); //this shows that my data source hasn't been updated, even though my ListAdapter presents my ListView in the correctly sorted order. 

Например: Если мой источник данных [10,9,1,20]

после сортировки мой ListView покажет [1,9,10,20]

но источник данных будет по-прежнему [10,9,1,20]

Как я могу решить эту проблему?

ответ

4

Это наоборот: сортировка источника данных будет заказывать ArrayAdapter.

Я предполагаю, что вы сделали что-то подобное раньше.

ArrayList<PercentChangeComparator> quotes = getQuotesFromSomewhere(); 
QuotesAdapter quotesAdapter = new QuotesAdapter(this, R.layout.xxx, quotes); 

Затем, если вы отсортирован кавычки, уведомляя адаптер, что DataSet изменилось должны отсортировать список

Collections.sort(quotes, new PercentChangeComparator()); 
quotesAdapter.notifyDataSetChanged(); 

Это работает для меня, я надеюсь, что это помогает.

Одна важная вещь: если вы воссоздаете исходный массив (цитаты в этом конкретном примере), адаптер не будет читать дальнейшие изменения. Таким образом, если вам необходимо изменить содержание вашего ListView, сделайте следующее:

quotes.clear(); 
quotes.add(...); 
quotes.add(...); 

Кроме того, убедитесь, что вы правильно реализован компаратор. Если выполнить этот

Collections.sort(quotes, new PercentChangeComparator()); 

и котировки не отсортированных, то эта проблема не связана с адаптером, но к Comparation.

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

  • Нет связанных вопросов^_^