Сортировка Android ListView

Я только запускаю с Android dev, и в то время как Этап является хорошим Java устройства, не мой естественный язык, и я борюсь и с документами Google о Android SDK, Eclipse и с самим Java. Так или иначе...

Я пишу клиенту микроблога для Android для соглашений с моим клиентом Windows (MahTweets). В данный момент у меня есть Твиты, приходящие и уходящие бесперебойно, проблема с UI.

Начальный вызов закажет объекты правильно (как в самом высоком к самому низкому)

  • 3
  • 2
  • 1

Когда обновление сделано

  • 3
  • 2
  • 1
  • 6
  • 5
  • 4

После того, как твиты обрабатываются, я звоню adapter.notifyDataSetChanged(); Первоначально я думал, что getItem () на Адаптере должен был быть отсортирован (и код ниже - то, что я закончил с), но у меня все еще нет удачи.

public class TweetAdapter extends BaseAdapter
{
private List<IStatusUpdate> elements;
private Context c;
public TweetAdapter(Context c, List<IStatusUpdate> Tweets)
{
    this.elements = Tweets;
    this.c = c;
}
public int getCount() {

    return elements.size();
}
public Object getItem(int position) {
    Collections.sort(elements, new IStatusUpdateComparator());
    return elements.get(position);
}
public long getItemId(int id) {
    return id;
}
public void Remove(int id)
{   
    notifyDataSetChanged();
}
public View getView(int position, View convertView, ViewGroup parent) 
{
    RelativeLayout rowLayout;
    IStatusUpdate t = elements.get(position);
            rowLayout = t.GetParent().GetUI(t, parent, c);
    return rowLayout;
}

class IStatusUpdateComparator implements Comparator
{
    public int compare(Object obj1, Object obj2)
    {
        IStatusUpdate update1 = (IStatusUpdate)obj1;
        IStatusUpdate update2 = (IStatusUpdate)obj2;
        int result = update1.getID().compareTo(update2.getID());

        if (result == -1)
        return 1;
        else if (result == 1)
        return 0;
        return result;
    }
}
}

Существует ли лучший способ пойти о сортировке ListViews в Android, в то время как все еще способность использовать LayoutInflater? (rowLayout = t.GetParent().GetUI(t, parent, c) разворачивает UI до определенного представления, которое реализация микроблога может обеспечить),

6
задан Paul Jenkins 14 April 2010 в 07:48
поделиться

1 ответ

Я бы не рекомендовал сортировать базовый список в getItem (), на мой взгляд, метод get .. () должен быть «идемпотентным» и не иметь любое видимое извне влияние на состояние его родителя.

В случае вашей проблемы я бы решил ее в момент добавления твитов в контейнер. Вы не включили эту часть исходного кода приложения, но, похоже, вы используете ArrayList. Возможно, вы запрашиваете у API Twitter список твитов, упорядоченных последними, и вызываете add () в своем ArrayList для каждого результата, который добавляет твиты в конец списка.

Знаете ли вы, что можно вставить в любой момент в ArrayList? Я бы рекомендовал reverse перебирать результаты из Twitter API и вставлять каждый результат в начало вашего ArrayList с помощью add (0, ....) вместо добавления в конец списка.

14
ответ дан 8 December 2019 в 17:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: