project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerListAdapter.java
changeset 7352 641f11cdd319
parent 7342 0e29eec2df5c
child 7358 57a508884052
equal deleted inserted replaced
7349:12fdfd2038d4 7352:641f11cdd319
     1 package org.hedgewars.hedgeroid.netplay;
     1 package org.hedgewars.hedgeroid.netplay;
     2 
     2 
     3 import java.util.ArrayList;
     3 import java.util.ArrayList;
     4 import java.util.Collection;
       
     5 import java.util.Collections;
     4 import java.util.Collections;
     6 import java.util.List;
     5 import java.util.List;
     7 import java.util.Map;
       
     8 
     6 
     9 import org.hedgewars.hedgeroid.R;
     7 import org.hedgewars.hedgeroid.R;
    10 import org.hedgewars.hedgeroid.netplay.PlayerList.Observer;
       
    11 
     8 
    12 import android.content.Context;
     9 import android.content.Context;
       
    10 import android.database.DataSetObserver;
    13 import android.view.LayoutInflater;
    11 import android.view.LayoutInflater;
    14 import android.view.View;
    12 import android.view.View;
    15 import android.view.ViewGroup;
    13 import android.view.ViewGroup;
    16 import android.widget.BaseAdapter;
    14 import android.widget.BaseAdapter;
    17 import android.widget.TextView;
    15 import android.widget.TextView;
    18 
    16 
    19 public class PlayerListAdapter extends BaseAdapter implements Observer {
    17 public class PlayerListAdapter extends BaseAdapter {
    20 	private List<Player> players = new ArrayList<Player>();
    18 	private List<Player> players = new ArrayList<Player>();
    21 	private Context context;
    19 	private Context context;
       
    20 	private PlayerList playerList;
       
    21 	
       
    22 	private DataSetObserver observer = new DataSetObserver() {
       
    23 		@Override
       
    24 		public void onChanged() {
       
    25 			reloadFromList(playerList);
       
    26 		}
       
    27 		
       
    28 		@Override
       
    29 		public void onInvalidated() {
       
    30 			invalidate();
       
    31 		}
       
    32 	};
    22 	
    33 	
    23 	public PlayerListAdapter(Context context) {
    34 	public PlayerListAdapter(Context context) {
    24 		this.context = context;
    35 		this.context = context;
    25 	}
    36 	}
    26 	
    37 	
    27 	public int getCount() {
    38 	public int getCount() {
    28 		return players.size();
    39 		return players.size();
    29 	}
    40 	}
    30 
    41 
    31 	public Object getItem(int position) {
    42 	public Player getItem(int position) {
    32 		return players.get(position);
    43 		return players.get(position);
    33 	}
    44 	}
    34 
    45 
    35 	public long getItemId(int position) {
    46 	public long getItemId(int position) {
    36 		return players.get(position).id;
    47 		return players.get(position).id;
    37 	}
    48 	}
    38 
    49 
    39 	public boolean hasStableIds() {
    50 	public boolean hasStableIds() {
    40 		return true;
    51 		return true;
    41 	}
    52 	}
    42 
    53 	
    43 	public void itemAdded(Map<String, Player> map, String key, Player value) {
    54 	public void setList(PlayerList playerList) {
    44 		setPlayerList(map.values());
    55 		if(this.playerList != null) {
    45 	}
    56 			this.playerList.unregisterObserver(observer);
    46 
    57 		}
    47 	public void itemRemoved(Map<String, Player> map, String key, Player oldValue) {
    58 		this.playerList = playerList;
    48 		setPlayerList(map.values());
    59 		this.playerList.registerObserver(observer);
    49 	}
    60 		reloadFromList(playerList);
    50 
       
    51 	public void itemReplaced(Map<String, Player> map, String key,
       
    52 			Player oldValue, Player newValue) {
       
    53 		setPlayerList(map.values());
       
    54 	}
    61 	}
    55 	
    62 	
    56 	public void setPlayerList(Collection<Player> players) {
    63 	public void invalidate() {
    57 		this.players = new ArrayList<Player>(players);
    64 		players = new ArrayList<Player>();
    58 		Collections.sort(this.players, Player.nameComparator);
    65 		if(playerList != null) {
       
    66 			playerList.unregisterObserver(observer);
       
    67 		}
       
    68 		playerList = null;
       
    69 		notifyDataSetInvalidated();
       
    70 	}
       
    71 	
       
    72 	private void reloadFromList(PlayerList list) {
       
    73 		players = new ArrayList<Player>(list.getMap().values());
       
    74 		Collections.sort(players, Player.NAME_COMPARATOR);
    59 		notifyDataSetChanged();
    75 		notifyDataSetChanged();
    60 	}
    76 	}
    61 	
    77 	
    62 	public View getView(int position, View convertView, ViewGroup parent) {
    78 	public View getView(int position, View convertView, ViewGroup parent) {
    63 		View v = convertView;
    79 		View v = convertView;