2014-11-25 5 views
0

Я гугл много, но не нашел ответ на мой вопрос:Android изменение порядка курсора

я получил курсор, который запрашивает таблицу, которая содержит широту и долготу. Я хочу заказать ListView на расстоянии до пользователя. Второй ответ в here показал мне, как заказать расстояние.

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

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

Большое спасибо

+0

каждый раз, когда пользователь перемещает вам нужно повторный запрос и вычисления снова – tyczj

+0

'Второй ответ в этом thread' ... хехехе ... порядок ответов динамически изменяется – Selvin

+0

@Selvin, но порядок by - это строка, которая некорректна в методе onCreateView моего фрагмента. это означает, что он всегда будет упорядочен по начальной точке. – zinninger

ответ

0

Если упорядочение определяется как вычисления в SQL, то я думаю, вам придется повторный запрос. (Курсор не будет динамически пересчитывать предложение ORDER BY, это происходит во время запроса в SQL).

В качестве альтернативы вы можете изменить свой адаптер на один, поддерживаемый списком, вместо курсора, и реализовать Comparator для сортировки данных. Затем уведомите адаптер о том, что данные были изменены. Предполагая, что каждая строка в списке поддерживается объект типа Item:

Collections.sort(listOfItems,new Comparator<Item>(){ 
public int compare(Item i1, Item i2){ 
    /* Compare your items here. Return 
    * -1 if i1 < i2 
    * 0 if i1 = i2 
    * 1 if i1 > i2 
    */ 
}}); 
+0

Как я уже упоминал, я работаю с курсором, поэтому я используя CursorAdapter. Вот почему я не могу использовать компаратор – zinninger

+0

Я обновил свой ответ. –

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