Я только запускаю с Android dev, и в то время как Этап является хорошим Java устройства, не мой естественный язык, и я борюсь и с документами Google о Android SDK, Eclipse и с самим Java. Так или иначе...
Я пишу клиенту микроблога для Android для соглашений с моим клиентом Windows (MahTweets). В данный момент у меня есть Твиты, приходящие и уходящие бесперебойно, проблема с UI.
Начальный вызов закажет объекты правильно (как в самом высоком к самому низкому)
Когда обновление сделано
После того, как твиты обрабатываются, я звоню 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 до определенного представления, которое реализация микроблога может обеспечить),
Я бы не рекомендовал сортировать базовый список в getItem (), на мой взгляд, метод get .. () должен быть «идемпотентным» и не иметь любое видимое извне влияние на состояние его родителя.
В случае вашей проблемы я бы решил ее в момент добавления твитов в контейнер. Вы не включили эту часть исходного кода приложения, но, похоже, вы используете ArrayList. Возможно, вы запрашиваете у API Twitter список твитов, упорядоченных последними, и вызываете add () в своем ArrayList для каждого результата, который добавляет твиты в конец списка.
Знаете ли вы, что можно вставить в любой момент в ArrayList? Я бы рекомендовал reverse перебирать результаты из Twitter API и вставлять каждый результат в начало вашего ArrayList с помощью add (0, ....) вместо добавления в конец списка.