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.ListAdapter; import android.widget.TextView; import com.eveningoutpost.dexdrip.Models.BgReading; import com.eveningoutpost.dexdrip.NavigationDrawerFragment; import com.eveningoutpost.dexdrip.R; import java.util.ArrayList; import java.util.Date; import java.util.List; public class BgReadingTable extends ListActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks { private String menu_name = "BG 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<BgReading> latest = BgReading.latest(50); ListAdapter adapter = new BgReadingAdapter(this, latest); this.setListAdapter(adapter); } public static class BgReadingCursorAdapterViewHolder { TextView raw_data_id; TextView raw_data_value; TextView raw_data_slope; TextView raw_data_timestamp; public BgReadingCursorAdapterViewHolder(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 BgReadingAdapter extends BaseAdapter { private final Context context; private final List<BgReading> readings; public BgReadingAdapter(Context context, List<BgReading> readings) { this.context = context; if(readings == null) readings = new ArrayList<>(); this.readings = readings; } public View newView(Context context, ViewGroup parent) { final View view = LayoutInflater.from(context).inflate(R.layout.raw_data_list_item, parent, false); final BgReadingCursorAdapterViewHolder holder = new BgReadingCursorAdapterViewHolder(view); view.setTag(holder); return view; } public void bindView(View view, Context context, BgReading bgReading) { final BgReadingCursorAdapterViewHolder tag = (BgReadingCursorAdapterViewHolder) view.getTag(); tag.raw_data_id.setText(Double.toString(bgReading.calculated_value)); tag.raw_data_value.setText(Double.toString(bgReading.age_adjusted_raw_value)); tag.raw_data_slope.setText(Double.toString(bgReading.raw_data)); tag.raw_data_timestamp.setText(new Date(bgReading.timestamp).toString()); } @Override public int getCount() { return readings.size(); } @Override public BgReading getItem(int position) { return readings.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; } } }