package com.example.devicehive.android.client.sample;
import java.util.List;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.dataart.android.devicehive.EquipmentData;
import com.dataart.android.devicehive.EquipmentState;
public class EquipmentListFragment extends ListFragment {
private EquipmentAdapter equipmentAdapter;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
public static EquipmentListFragment newInstance() {
EquipmentListFragment f = new EquipmentListFragment();
return f;
}
public void setEquipment(List<EquipmentData> equipment,
List<EquipmentState> equipmentState) {
equipmentAdapter = new EquipmentAdapter(getActivity(), equipment,
equipmentState);
setListAdapter(equipmentAdapter);
}
private static class EquipmentAdapter extends BaseAdapter {
private final LayoutInflater inflater;
private List<EquipmentData> equipmentList;
private List<EquipmentState> equipmentStateList;
public EquipmentAdapter(Context context,
List<EquipmentData> equipmentList,
List<EquipmentState> equipmentStateList) {
this.equipmentList = equipmentList;
this.equipmentStateList = equipmentStateList;
this.inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return equipmentList.size();
}
@Override
public Object getItem(int position) {
return equipmentList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.equipment_list_item,
null);
holder = new ViewHolder();
holder.name = (TextView) convertView
.findViewById(R.id.equipment_name_text_view);
holder.code = (TextView) convertView
.findViewById(R.id.equipment_code_text_view);
holder.type = (TextView) convertView
.findViewById(R.id.equipment_type_text_view);
holder.data = (TextView) convertView
.findViewById(R.id.equipment_data_text_view);
holder.state = (TextView) convertView
.findViewById(R.id.equipment_state_text_view);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
final EquipmentData equipmentData = equipmentList.get(position);
holder.name.setText(equipmentData.getName());
holder.code.setText(equipmentData.getCode());
holder.type.setText(equipmentData.getType());
holder.data.setText(equipmentData.getData() != null ? equipmentData
.getData().toString() : "--");
final EquipmentState state = getEquipmentState(equipmentData);
holder.state.setText(equipmentStateAsString(state));
return convertView;
}
private class ViewHolder {
TextView name;
TextView code;
TextView type;
TextView data;
TextView state;
}
private EquipmentState getEquipmentState(EquipmentData equipmentData) {
for (EquipmentState state : equipmentStateList) {
if (state.getEquipmentCode().equals(equipmentData.getCode())) {
return state;
}
}
return null;
}
private static String equipmentStateAsString(EquipmentState state) {
if (state != null) {
return "" + state.getParameters();
} else {
return "--";
}
}
}
}