package be.ppareit.nanopond; import android.app.Activity; import android.content.Context; import android.util.Pair; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class ReportListAdapter extends BaseAdapter { Activity activity; NanoPond nanopond; volatile NanoPond.Report report; public ReportListAdapter(Context context, NanoPond np) { activity = (Activity) context; nanopond = np; report = nanopond.getReport(); new Thread(() -> { try { Thread.sleep(1000); while (true) { report = nanopond.getReport(); activity.runOnUiThread(() -> notifyDataSetChanged()); Thread.sleep(100); } } catch (InterruptedException e) { throw new RuntimeException(e); } }).start(); } @Override public int getCount() { return 7; } @Override public Pair<String, Long> getItem(int position) { switch (position) { case 0: return new Pair<String, Long>("Year", report.year); case 1: return new Pair<String, Long>("Energy", report.energy); case 2: return new Pair<String, Long>("Max generation", report.maxGeneration); case 3: return new Pair<String, Long>("Active cells", report.activeCells); case 4: return new Pair<String, Long>("Viable replicators", report.viableReplicators); case 5: return new Pair<String, Long>("Kills", report.kills); case 6: return new Pair<String, Long>("Replaced", report.replaced); case 7: return new Pair<String, Long>("Shares", report.shares); } return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater li = activity.getLayoutInflater(); v = li.inflate(R.layout.report_entry, null); } TextView keyView = (TextView) v.findViewById(R.id.entry_key); TextView valueView = (TextView) v.findViewById(R.id.entry_value); Pair<String, Long> item = getItem(position); keyView.setText(item.first); valueView.setText(item.second.toString()); return v; } }