package com.eveningoutpost.dexdrip.Tables;
import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.activeandroid.Cache;
import com.eveningoutpost.dexdrip.Models.Calibration;
import com.eveningoutpost.dexdrip.NavigationDrawerFragment;
import com.eveningoutpost.dexdrip.R;
import java.util.ArrayList;
import java.util.List;
public class CalibrationDataTable extends ListActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks {
private String menu_name = "Calibration Data Table";
private NavigationDrawerFragment mNavigationDrawerFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.raw_data_list);
}
@Override
protected void onResume(){
super.onResume();
mNavigationDrawerFragment = (NavigationDrawerFragment) getFragmentManager().findFragmentById(R.id.navigation_drawer);
mNavigationDrawerFragment.setUp(R.id.navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), menu_name, this);
getData();
}
@Override
public void onNavigationDrawerItemSelected(int position) {
mNavigationDrawerFragment.swapContext(position);
}
private void getData() {
final List<Calibration> latest = Calibration.latest(50);
CalibrationDataCursorAdapter adapter = new CalibrationDataCursorAdapter(this, latest);
this.setListAdapter(adapter);
}
public static class CalibrationDataCursorAdapterViewHolder {
TextView raw_data_id;
TextView raw_data_value;
TextView raw_data_slope;
TextView raw_data_timestamp;
public CalibrationDataCursorAdapterViewHolder(View root) {
raw_data_id = (TextView) root.findViewById(R.id.raw_data_id);
raw_data_value = (TextView) root.findViewById(R.id.raw_data_value);
raw_data_slope = (TextView) root.findViewById(R.id.raw_data_slope);
raw_data_timestamp = (TextView) root.findViewById(R.id.raw_data_timestamp);
}
}
public static class CalibrationDataCursorAdapter extends BaseAdapter {
private final Context context;
private final List<Calibration> calibrations;
public CalibrationDataCursorAdapter(Context context, List<Calibration> calibrations) {
this.context = context;
if(calibrations == null)
calibrations = new ArrayList<>();
this.calibrations = calibrations;
}
public View newView(Context context, ViewGroup parent) {
final View view = LayoutInflater.from(context).inflate(R.layout.raw_data_list_item, parent, false);
final CalibrationDataCursorAdapterViewHolder holder = new CalibrationDataCursorAdapterViewHolder(view);
view.setTag(holder);
return view;
}
public void bindView(View view, Context context, Calibration calibration) {
final CalibrationDataCursorAdapterViewHolder tag = (CalibrationDataCursorAdapterViewHolder) view.getTag();
tag.raw_data_id.setText(Double.toString(calibration.bg));
tag.raw_data_value.setText(Double.toString(calibration.estimate_raw_at_time_of_calibration));
tag.raw_data_slope.setText(Double.toString(calibration.slope));
tag.raw_data_timestamp.setText(Double.toString(calibration.intercept));
}
@Override
public int getCount() {
return calibrations.size();
}
@Override
public Calibration getItem(int position) {
return calibrations.get(position);
}
@Override
public long getItemId(int position) {
return getItem(position).getId();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
convertView = newView(context, parent);
bindView(convertView, context, getItem(position));
return convertView;
}
}
}