Android Example Code

From Klaus' wiki
Jump to: navigation, search
package com.kolle.meterreading;
 
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
 
public class Tab1Activity extends Activity
{
	/**
	 * @see android.app.Activity#onCreate(Bundle)
	 */
	DbAdapter	dba;
	Spinner		spinner;
	EditText	eView;
	TextView	label;
	String		selItem;
 
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.tab1intent);
 
		// Create an instance of the database adapter and open the database
		dba = new DbAdapter(this);
		dba.open(); // Will be closed in the onPause
		setSpinner();
 
		// Get an instance of the buttons
		Button button_log = (Button) findViewById(R.id.button_log01);
		Button button_clear = (Button) findViewById(R.id.button_clear01);
		Button button_edit = (Button) findViewById(R.id.button_edit);
 
		// Create a listener
		button_log.setOnClickListener(new OnClickListener()
		{
 
			@Override
			public void onClick(View v)
			{
				if (selItem == getString(R.string.noMeters))
				{
					Toast.makeText(Tab1Activity.this,
							"There is no meteres in the database.", Toast.LENGTH_LONG).show();
					return;
				}
				if (selItem.length() == 0)
				{
					// Don't log nothing!
					Toast.makeText(Tab1Activity.this, "First select a meter...", Toast.LENGTH_LONG).show();
					return;
				}
				dba.open();
				Log.d("meterReading", "Tab1Activity.button_log: onClick");
				eView = (EditText) findViewById(R.id.reading01);
				String reading = eView.getText().toString();
				if (reading.length() == 0)
				{
					// Don't log nothing!
					Toast.makeText(Tab1Activity.this, "No reading entered...", Toast.LENGTH_LONG).show();
					return;
				}
				Log.d("meterReading", "Tab2Activity.button_create: onClick logging for meter=" + selItem
						+ ", reading=" + reading);
				dba.addMeter(selItem, reading);
				Toast.makeText(Tab1Activity.this, "Logging stored", Toast.LENGTH_LONG).show();
				eView.setText("");
				label.setText("");
				dba.close();
				return;
			}
		});
 
		// Create a listener
		button_clear.setOnClickListener(new OnClickListener()
		{
 
			@Override
			public void onClick(View v)
			{
				Log.d("meterReading", "Tab1Activity.button_clear: onClick");
				eView = (EditText) findViewById(R.id.reading01);
				if (eView.getText().toString().length() == 0)
				{
					// Nothing to clear...
					Toast.makeText(Tab1Activity.this, "Nothing to clear...", Toast.LENGTH_LONG).show();
					return;
				}
				eView.setText("");
				// Do something reasonable with the selection
				label = (TextView) findViewById(R.id.last_reading01);
				label.setText(dba.getLastReading(selItem));
				Toast.makeText(Tab1Activity.this, "Try agin", Toast.LENGTH_LONG).show();
				return;
			}
		});
 
		button_edit.setOnClickListener(new OnClickListener()
		{
 
			@Override
			public void onClick(View v)
			{
				// TODO Auto-generated method stub
				if (selItem == getString(R.string.noMeters))
				{
					Toast.makeText(Tab1Activity.this,
							"There is no meteres in the database.", Toast.LENGTH_LONG).show();
					return;
				}
 
				Toast.makeText(Tab1Activity.this, "Comming - patience please...", Toast.LENGTH_LONG).show();
 
			}
		});
	}
 
	private void setSpinner()
	{
		Log.d("meterReading", "Tab1Activity: Creating an instance of the spinner.");
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		Log.d("meterReading", "Tab1Activity: Creating an instance of the DbAdapter.");
		// Set the first page selection box (spinner)
		// Get a cursor from the database
		Cursor c = dba.getAllMeters();
		Log.d("meterReading", "Tab1Activity: Received a cursor from getAllMeters.");
		// Check if the cursor points to any records
		if (!c.moveToFirst())
		{
			// It doesn't
			Log.d("meterReading", "Tab1Activity: No meters in database.");
			// noMeters is defined in res.values.strings.xml
			adapter.add(getString(R.string.noMeters));
		}
		else
		{
			// It do - insert the list into the spinner
			do
			{
				Log.d("meterReading", "Tab1Activity: Adding one meter to the list.");
				adapter.add(c.getString(1));
			} while (c.moveToNext());
		}
		// Display the spinner
		// adapter
		// .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		Log.d("meterReading", "Tab1Activity: Changing the adapter");
		spinner = (Spinner) findViewById(R.id.meters01);
		spinner.setAdapter(adapter);
		spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
		Log.d("meterReading", "Tab1Activity: Changed the adapter");
	}
 
	protected void onResume()
	{
		super.onResume();
		dba.open();
		setSpinner();
	}
 
	protected void onPause()
	{
		super.onPause();
		Log.d("meterReading", "Tab1Activity: onPause");
		// Close the database when this tab is no longer visible
		dba.close();
	}
 
	public class MyOnItemSelectedListener implements OnItemSelectedListener
	{
 
		public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
		{
			label = (TextView) findViewById(R.id.last_reading01);
			Log.d("meterReading", "Tab1Activity: onItemSelected");
			selItem = parent.getItemAtPosition(pos).toString();
			// Do something reasonable with the selection
			String lastReading = dba.getLastReading(selItem);
			label.setText(lastReading);
		}
 
		public void onNothingSelected(AdapterView<?> parent)
		{
			Log.d("meterReading", "Tab1Activity: onNothingSelected");
			// Do nothing
			// Well maybe later clear some fields or something like that
		}
	}
}