private void startControl() { adapter = new ClientArrayAdapter(this, new ArrayList<Client>()); ListView listView = (ListView) findViewById(R.id.clientlist); listView.setAdapter(adapter); wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); apControl = WifiApControl.getInstance(this); new Thread() { @Override public void run() { try { while (!isInterrupted()) { Thread.sleep(1000); runOnUiThread(new Runnable() { @Override public void run() { refresh(); } }); } } catch (InterruptedException e) { // ignored } } }.start(); }
public void setClients(List<Client> clients) { clear(); if (clients != null) { compatAddAll(clients); reachable = new boolean[clients.size()]; } notifyDataSetChanged(); }
private void listClients(int timeout) { if (apControl == null) { return; } List<Client> clients = apControl.getReachableClients(timeout, new ReachableClientListener() { public void onReachableClient(final Client client) { runOnUiThread(new Runnable() { @Override public void run() { adapter.setReachable(client); } }); } public void onComplete() { } }); adapter.setClients(clients); }
@Override public View getView(int position, View view, ViewGroup parent) { ViewHolder holder; if (view == null) { LayoutInflater inflater = LayoutInflater.from(getContext()); view = inflater.inflate(R.layout.clientlistitem, parent, false); holder = new ViewHolder(); holder.desc = (TextView) view.findViewById(R.id.client_desc); holder.reach = (TextView) view.findViewById(R.id.client_reach); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } Client client = getItem(position); holder.desc.setText(client.ipAddr + " " + client.hwAddr); holder.reach.setText(reachable[position] ? "R" : ""); return view; }
public void setReachable(Client client) { int position = getPosition(client); if (position < 0) { return; } reachable[position] = true; notifyDataSetChanged(); }