package de.graeb.adsbsniffer.status; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import de.graeb.adsbsniffer.R; import de.graeb.adsbsniffer.Recorder; import de.graeb.adsbsniffer.RecordingStatistics; import de.graeb.adsbsniffer.ui.PlaneImages; /** * @author markus */ public class PlaneStatus extends Activity { private PlaneAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_status_planes); getActionBar().setDisplayHomeAsUpEnabled(true); ListView listView = (ListView) findViewById(R.id.listView_planes); adapter = new PlaneAdapter(this); listView.setAdapter(adapter); TextView textPlanesLastMinutes = (TextView) findViewById(R.id.text_planes_last_minutes); textPlanesLastMinutes.setText(String.format(getString(R.string.planes_in_the_last_minutes), Recorder.getInstance().getRecordingStatistics().getTimeoutFlight())); updateHandler.sendEmptyMessage(0); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); return true; } return super.onOptionsItemSelected(item); } @Override protected void onStop() { super.onStop(); updateHandler.removeMessages(0); } private final Handler updateHandler = new Handler() { @Override public void handleMessage(Message msg) { RecordingStatistics recordingStatistics = Recorder.getInstance().getRecordingStatistics(); adapter.setContent(recordingStatistics.getIcao24s()); this.sendEmptyMessageDelayed(0, 1000); } }; private class PlaneAdapter extends BaseAdapter { private final Context context; private String[] textContent = new String[0]; public PlaneAdapter(Context context) { this.context = context; } @Override public int getCount() { return textContent.length; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { View view; if (convertView != null) { view = convertView; } else { view = LayoutInflater.from(context).inflate(R.layout.item_icao24, null); } RecordingStatistics recordingStatistics = Recorder.getInstance().getRecordingStatistics(); TextView textId = (TextView) view.findViewById(android.R.id.text1); TextView textRateAdsb = (TextView) view.findViewById(R.id.text_rate_adsb); TextView textRateModeS = (TextView) view.findViewById(R.id.text_rate_smode); textId.setText(textContent[position]); RecordingStatistics.Entry entry = recordingStatistics.getEntry(textContent[position]); textRateAdsb.setText(String.format("%d", entry.getPacketsAdsb())); textRateModeS.setText(String.format("%d", entry.getPacketsModeS())); ImageView imageView = (ImageView) view.findViewById(R.id.imageview_countryflag); imageView.setImageResource(PlaneImages.lookupAircraft(textContent[position])); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(PlaneStatus.this, SinglePlaneStatus.class); intent.putExtra(SinglePlaneStatus.EXTRA_ICAO24, textContent[position]); startActivity(intent); } }); return view; } public void setContent(String[] text) { this.textContent = text; notifyDataSetChanged(); } } }