package com.kuxhausen.huemore.net;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.kuxhausen.huemore.R;
import java.util.ArrayList;
public class ConnectionRowAdapter extends ArrayAdapter<Connection> {
private Activity context;
private ArrayList<Connection> list;
public void setList(ArrayList<Connection> l) {
list = l;
}
public ConnectionRowAdapter(Activity con, int layout, ArrayList<Connection> l) {
super(con, layout, l);
context = con;
list = l;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
ViewHolder holder;
if (rowView == null) {
// Get a new instance of the row layout view
LayoutInflater inflater = (context).getLayoutInflater();
rowView = inflater.inflate(R.layout.connection_row, null);
// Hold the view objects in an object, that way the don't need to be "re-finded"
holder = new ViewHolder();
holder.mainText = (TextView) rowView.findViewById(R.id.mainTextView);
holder.secondaryText = (TextView) rowView.findViewById(R.id.subTextView);
holder.connectivingSpinner =
(ProgressBar) rowView.findViewById(R.id.connectivityStatusProgressBar);
holder.connectedIcon =
(ImageView) rowView.findViewById(R.id.connectivityStatusConnectedImageView);
holder.unreachableIcon =
(ImageView) rowView.findViewById(R.id.connectivityStatusUnreachableImageView);
rowView.setTag(holder);
} else {
holder = (ViewHolder) rowView.getTag();
}
/** Set data to your Views. */
Connection c = list.get(position);
holder.mainText.setTag(c);
holder.mainText.setText(c.mainDescription());
holder.secondaryText.setText(c.subDescription());
boolean anyConnected = false;
boolean anyUnknown = false;
for (NetworkBulb nb : c.getBulbs()) {
switch (nb.getConnectivityState()) {
case Connected:
anyConnected = true;
break;
case Unknown:
anyUnknown = true;
break;
case Unreachable:
break;
}
}
if (anyConnected) {
holder.connectedIcon.setVisibility(View.VISIBLE);
holder.connectivingSpinner.setVisibility(View.GONE);
holder.unreachableIcon.setVisibility(View.GONE);
} else if (anyUnknown) {
holder.connectedIcon.setVisibility(View.GONE);
holder.connectivingSpinner.setVisibility(View.VISIBLE);
holder.unreachableIcon.setVisibility(View.GONE);
} else {
holder.connectedIcon.setVisibility(View.GONE);
holder.connectivingSpinner.setVisibility(View.GONE);
holder.unreachableIcon.setVisibility(View.VISIBLE);
}
return rowView;
}
protected static class ViewHolder {
protected TextView mainText;
protected TextView secondaryText;
protected ProgressBar connectivingSpinner;
protected ImageView connectedIcon;
protected ImageView unreachableIcon;
}
}