blob: eea59a1fc5380ccd325d2c9f357c10032ae5a824 [file] [log] [blame]
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";
}
}
}