blob: c6bb1cd19f271556944ab5d89fdc59410a1dfe47 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package io.v.discoverysample;
import android.app.Activity;
import android.content.Context;
import android.database.DataSetObserver;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.google.common.base.Joiner;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.List;
import io.v.impl.google.lib.discovery.ScanHandler;
import io.v.x.ref.lib.discovery.Advertisement;
/**
* Created by bjornick on 10/14/15.
*/
public class ScanHandlerAdapter extends BaseAdapter implements ScanHandler{
List<Advertisement> knownAdvertisements;
List<DataSetObserver> observers;
LayoutInflater inflater;
Activity activity;
ScanHandlerAdapter(Activity activity) {
knownAdvertisements = new ArrayList<>();
observers = new ArrayList<>();
this.activity = activity;
inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return knownAdvertisements.size();
}
@Override
public Object getItem(int i) {
if (i < knownAdvertisements.size()) {
return knownAdvertisements.get(i);
}
return null;
}
@Override
public long getItemId(int i) {
if (i < knownAdvertisements.size()) {
return knownAdvertisements.get(i).hashCode();
}
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (view == null) {
view = inflater.inflate(R.layout.item, null);
}
Advertisement adv = knownAdvertisements.get(i);
TextView displayName = (TextView)view.findViewById(R.id.display_name);
displayName.setText(adv.getService().getInstanceName());
TextView interfaceName = (TextView)view.findViewById(R.id.interface_name);
interfaceName.setText(adv.getService().getInterfaceName());
TextView addrs = (TextView)view.findViewById(R.id.addrs);
addrs.setText(Joiner.on(",").join(adv.getService().getAddrs()));
ListView attrs = (ListView)view.findViewById(R.id.attributes);
attrs.setAdapter(new AttrAdapter(inflater, adv.getService().getAttrs()));
return view;
}
@Override
public int getItemViewType(int i) {
return 0;
}
@Override
public int getViewTypeCount() {
return 1;
}
@Override
public boolean isEmpty() {
return knownAdvertisements.isEmpty();
}
@Override
public void handleUpdate(Advertisement advertisement) {
if (!advertisement.getLost()) {
knownAdvertisements.add(advertisement);
} else {
advertisement.setLost(false);
knownAdvertisements.remove(advertisement);
}
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
notifyDataSetChanged();
}
});
}
}