package com.example.android.wifidirect.discovery; import android.app.ListFragment; import android.content.Context; import android.net.wifi.p2p.WifiP2pDevice; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; import java.util.List; /** * A simple ListFragment that shows the available services as published by the * peers */ public class WiFiDirectServicesList extends ListFragment { WiFiDevicesAdapter listAdapter = null; interface DeviceClickListener { public void connectP2p(WiFiP2pService wifiP2pService); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.devices_list, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); listAdapter = new WiFiDevicesAdapter(this.getActivity(), android.R.layout.simple_list_item_2, android.R.id.text1, new ArrayList<WiFiP2pService>()); setListAdapter(listAdapter); } @Override public void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub ((DeviceClickListener) getActivity()).connectP2p((WiFiP2pService) l .getItemAtPosition(position)); ((TextView) v.findViewById(android.R.id.text2)).setText("Connecting"); } public class WiFiDevicesAdapter extends ArrayAdapter<WiFiP2pService> { private List<WiFiP2pService> items; public WiFiDevicesAdapter(Context context, int resource, int textViewResourceId, List<WiFiP2pService> items) { super(context, resource, textViewResourceId, items); this.items = items; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater vi = (LayoutInflater) getActivity() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(android.R.layout.simple_list_item_2, null); } WiFiP2pService service = items.get(position); if (service != null) { TextView nameText = (TextView) v .findViewById(android.R.id.text1); if (nameText != null) { nameText.setText(service.device.deviceName + " - " + service.instanceName); } TextView statusText = (TextView) v .findViewById(android.R.id.text2); statusText.setText(getDeviceStatus(service.device.status)); } return v; } } public static String getDeviceStatus(int statusCode) { switch (statusCode) { case WifiP2pDevice.CONNECTED: return "Connected"; case WifiP2pDevice.INVITED: return "Invited"; case WifiP2pDevice.FAILED: return "Failed"; case WifiP2pDevice.AVAILABLE: return "Available"; case WifiP2pDevice.UNAVAILABLE: return "Unavailable"; default: return "Unknown"; } } }