project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerListAdapter.java
changeset 7358 57a508884052
parent 7352 641f11cdd319
child 7449 2e63537b44f3
equal deleted inserted replaced
7355:5673e95ef647 7358:57a508884052
     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.Collections;
     4 import java.util.Collections;
       
     5 import java.util.Comparator;
     5 import java.util.List;
     6 import java.util.List;
     6 
     7 
     7 import org.hedgewars.hedgeroid.R;
     8 import org.hedgewars.hedgeroid.R;
     8 
     9 
     9 import android.content.Context;
    10 import android.content.Context;
    10 import android.database.DataSetObserver;
    11 import android.database.DataSetObserver;
       
    12 import android.util.Pair;
    11 import android.view.LayoutInflater;
    13 import android.view.LayoutInflater;
    12 import android.view.View;
    14 import android.view.View;
    13 import android.view.ViewGroup;
    15 import android.view.ViewGroup;
    14 import android.widget.BaseAdapter;
    16 import android.widget.BaseAdapter;
    15 import android.widget.TextView;
    17 import android.widget.TextView;
    16 
    18 
    17 public class PlayerListAdapter extends BaseAdapter {
    19 public class PlayerListAdapter extends BaseAdapter {
    18 	private List<Player> players = new ArrayList<Player>();
    20 	private List<Pair<Player, Long>> players = new ArrayList<Pair<Player, Long>>();
    19 	private Context context;
    21 	private Context context;
    20 	private PlayerList playerList;
    22 	private PlayerList playerList;
    21 	
    23 	
    22 	private DataSetObserver observer = new DataSetObserver() {
    24 	private DataSetObserver observer = new DataSetObserver() {
    23 		@Override
    25 		@Override
    38 	public int getCount() {
    40 	public int getCount() {
    39 		return players.size();
    41 		return players.size();
    40 	}
    42 	}
    41 
    43 
    42 	public Player getItem(int position) {
    44 	public Player getItem(int position) {
    43 		return players.get(position);
    45 		return players.get(position).first;
    44 	}
    46 	}
    45 
    47 
    46 	public long getItemId(int position) {
    48 	public long getItemId(int position) {
    47 		return players.get(position).id;
    49 		return players.get(position).second;
    48 	}
    50 	}
    49 
    51 
    50 	public boolean hasStableIds() {
    52 	public boolean hasStableIds() {
    51 		return true;
    53 		return true;
    52 	}
    54 	}
    59 		this.playerList.registerObserver(observer);
    61 		this.playerList.registerObserver(observer);
    60 		reloadFromList(playerList);
    62 		reloadFromList(playerList);
    61 	}
    63 	}
    62 	
    64 	
    63 	public void invalidate() {
    65 	public void invalidate() {
    64 		players = new ArrayList<Player>();
       
    65 		if(playerList != null) {
    66 		if(playerList != null) {
    66 			playerList.unregisterObserver(observer);
    67 			playerList.unregisterObserver(observer);
    67 		}
    68 		}
    68 		playerList = null;
    69 		playerList = null;
    69 		notifyDataSetInvalidated();
    70 		notifyDataSetInvalidated();
    70 	}
    71 	}
    71 	
    72 	
    72 	private void reloadFromList(PlayerList list) {
    73 	private void reloadFromList(PlayerList list) {
    73 		players = new ArrayList<Player>(list.getMap().values());
    74 		players = new ArrayList<Pair<Player, Long>>(list.getMap().values());
    74 		Collections.sort(players, Player.NAME_COMPARATOR);
    75 		Collections.sort(players, AlphabeticalOrderComparator.INSTANCE);
    75 		notifyDataSetChanged();
    76 		notifyDataSetChanged();
    76 	}
    77 	}
    77 	
    78 	
    78 	public View getView(int position, View convertView, ViewGroup parent) {
    79 	public View getView(int position, View convertView, ViewGroup parent) {
    79 		View v = convertView;
    80 		View v = convertView;
    83 			TextView tv = (TextView)v.findViewById(android.R.id.text1);
    84 			TextView tv = (TextView)v.findViewById(android.R.id.text1);
    84 			tv.setCompoundDrawablePadding(5);
    85 			tv.setCompoundDrawablePadding(5);
    85 			tv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.human, 0, 0, 0);
    86 			tv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.human, 0, 0, 0);
    86 		}
    87 		}
    87 
    88 
    88 		String player = players.get(position).name;
    89 		String player = players.get(position).first.name;
    89 		TextView username = (TextView) v.findViewById(android.R.id.text1);
    90 		TextView username = (TextView) v.findViewById(android.R.id.text1);
    90 		username.setText(player);
    91 		username.setText(player);
    91 		return v;
    92 		return v;
    92 	}
    93 	}
       
    94 	
       
    95 	private static final class AlphabeticalOrderComparator implements Comparator<Pair<Player, Long>> {
       
    96 		public static final AlphabeticalOrderComparator INSTANCE = new AlphabeticalOrderComparator();
       
    97 		public int compare(Pair<Player, Long> lhs, Pair<Player, Long> rhs) {
       
    98 			return lhs.first.name.compareToIgnoreCase(rhs.first.name);
       
    99 		};
       
   100 	}
    93 }
   101 }