project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/RoomListAdapter.java
--- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/RoomListAdapter.java Tue Jul 24 16:57:48 2012 +0200
+++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/RoomListAdapter.java Thu Jul 26 11:01:32 2012 +0200
@@ -2,6 +2,7 @@
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import org.hedgewars.hedgeroid.R;
@@ -9,6 +10,7 @@
import android.content.Context;
import android.content.res.Resources;
import android.database.DataSetObserver;
+import android.util.Pair;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -16,7 +18,7 @@
import android.widget.TextView;
public class RoomListAdapter extends BaseAdapter {
- private List<Room> rooms = new ArrayList<Room>();
+ private List<Pair<Room, Long>> rooms = new ArrayList<Pair<Room, Long>>();
private Context context;
private RoomList roomList;
@@ -41,11 +43,11 @@
}
public Room getItem(int position) {
- return rooms.get(position);
+ return rooms.get(position).first;
}
public long getItemId(int position) {
- return rooms.get(position).id;
+ return rooms.get(position).second;
}
public boolean hasStableIds() {
@@ -62,7 +64,6 @@
}
public void invalidate() {
- rooms = new ArrayList<Room>();
if(roomList != null) {
roomList.unregisterObserver(observer);
}
@@ -71,8 +72,8 @@
}
private void reloadFromList(RoomList list) {
- rooms = new ArrayList<Room>(roomList.getMap().values());
- Collections.sort(rooms, Collections.reverseOrder(Room.ID_COMPARATOR));
+ rooms = new ArrayList<Pair<Room, Long>>(roomList.getMap().values());
+ Collections.sort(rooms, RoomAgeComparator.INSTANCE);
notifyDataSetChanged();
}
@@ -91,7 +92,7 @@
v = vi.inflate(R.layout.listview_room, null);
}
- Room room = rooms.get(position);
+ Room room = rooms.get(position).first;
int iconRes = room.inProgress ? R.drawable.roomlist_ingame : R.drawable.roomlist_preparing;
if(v.findViewById(android.R.id.text1) == null) {
@@ -128,4 +129,11 @@
return v;
}
+
+ private static final class RoomAgeComparator implements Comparator<Pair<Room, Long>> {
+ public static final RoomAgeComparator INSTANCE = new RoomAgeComparator();
+ public int compare(Pair<Room, Long> lhs, Pair<Room, Long> rhs) {
+ return rhs.second.compareTo(lhs.second);
+ }
+ }
}
\ No newline at end of file