How To Minus Off The Previous Keyed Value(store In Database)
Solution 1:
Final Edited Answer
See the solved
import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Intent;
import android.content.SharedPreferences;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
publicclassEditResult1extendsActivity {
// TableLayout tablelayout_Log = null;ButtonsaveButton=null;
ButtoncancelButton=null;
// Button searchButton = null;static EditText dateEdit;
EditText priceEdit;
EditText pumpEdit;
TextView costView;
EditText odometerEdit;
TextView fconView;
TextWatcher textWatcher;
StringpriceEditStr="",pumpEditStr="";
StringodmEditStr="";
StringlastOdm="";
double result;
double resultCon;
privateint mYear;
privateint mMonth;
privateint mDay;
SharedPreferences sp;
staticfinalintDATE_DIALOG_ID=0;
publicbooleanisNumeric(String str)
{
return str.matches("-?\\d+(\\.\\d+)?");
}
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_sample);
costView = (TextView)findViewById(R.id.tcost);
dateEdit = (EditText)findViewById(R.id.date);
priceEdit = (EditText)findViewById(R.id.fuelprice);
pumpEdit = (EditText)findViewById(R.id.fuelpump);
odometerEdit = (EditText)findViewById(R.id.odometer);
fconView = (TextView)findViewById(R.id.fcon);
/**
* Shared preference
**/
sp=this.getSharedPreferences("result_store", MODE_WORLD_READABLE);
lastOdm=sp.getString("ODO", lastOdm);
if(lastOdm.trim().equalsIgnoreCase("NA"))
Toast.makeText(getApplicationContext(), " "+lastOdm.trim(), Toast.LENGTH_LONG).show();
else
Toast.makeText(getApplicationContext(), " "+lastOdm.trim(), Toast.LENGTH_LONG).show();
dateEdit.setOnClickListener(newView.OnClickListener() {
publicvoidonClick(View v) {
// showDialog(DATE_DIALOG_ID);DialogFragmentnewFragment=newDatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
});
priceEdit.addTextChangedListener(newTextWatcher() {
@OverridepublicvoidbeforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@OverridepublicvoidonTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@OverridepublicvoidafterTextChanged(Editable editable) {
//here, after we introduced something in the EditText we get the string from itif(!priceEdit.getText().toString().trim().equalsIgnoreCase("") && !priceEdit.getText().toString().trim().equalsIgnoreCase(null))
priceEditStr = priceEdit.getText().toString().trim();
if(!pumpEdit.getText().toString().trim().equalsIgnoreCase("") && !pumpEdit.getText().toString().trim().equalsIgnoreCase(null))
pumpEditStr = pumpEdit.getText().toString().trim();
if(!priceEdit.getText().toString().trim().equalsIgnoreCase("") && !pumpEdit.getText().toString().trim().equalsIgnoreCase(""))
{
result = Double.parseDouble(priceEditStr) * Double.parseDouble(pumpEditStr);
costView.setText(" "+result);
}
}
});
pumpEdit.addTextChangedListener(newTextWatcher() {
@OverridepublicvoidbeforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@OverridepublicvoidonTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@OverridepublicvoidafterTextChanged(Editable editable) {
//here, after we introduced something in the EditText we get the string from itif(!priceEdit.getText().toString().trim().equalsIgnoreCase(""))
priceEditStr = priceEdit.getText().toString().trim();
if(!pumpEdit.getText().toString().trim().equalsIgnoreCase(""))
pumpEditStr = pumpEdit.getText().toString().trim();
if(!priceEdit.getText().toString().trim().equalsIgnoreCase("") && !pumpEdit.getText().toString().trim().equalsIgnoreCase(""))
{
result = Double.parseDouble(priceEditStr) * Double.parseDouble(pumpEditStr);
costView.setText(" "+result);
}
}
});
odometerEdit.addTextChangedListener(newTextWatcher() {
@OverridepublicvoidbeforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@OverridepublicvoidonTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@OverridepublicvoidafterTextChanged(Editable editable) {
//here, after we introduced something in the EditText we get the string from itif(!odometerEdit.getText().toString().trim().equalsIgnoreCase(""))
odmEditStr = odometerEdit.getText().toString().trim();
if(!odometerEdit.getText().toString().trim().equalsIgnoreCase("") && !pumpEdit.getText().toString().trim().equalsIgnoreCase("") && !lastOdm.trim().equalsIgnoreCase("") && !lastOdm.trim().equalsIgnoreCase("NA"))
{
resultCon = Double.parseDouble(odmEditStr) - Double.parseDouble(lastOdm) / Double.parseDouble(pumpEditStr);
fconView.setText(" "+resultCon);
}
}
});
cancelButton = (Button) findViewById(R.id.cancelBTN);
cancelButton.setOnClickListener(newView.OnClickListener() {
publicvoidonClick(View v) {
// TODO Auto-generated method stub/// Create Intent for About and start activity
Intent summaryView=newIntent(getApplicationContext(),ActivityA.class);
startActivity(summaryView);
}
});
//Insert
saveButton = (Button) findViewById(R.id.saveBTN);
saveButton.setOnClickListener(newOnClickListener()
{
publicvoidonClick(View v)
{
DBAdapterdbAdaptor=newDBAdapter(getApplicationContext());
try
{
dbAdaptor.open();
// String cursor = dbAdaptor.getLastOdometer();Stringdate= dateEdit.getText().toString();
Stringprice= priceEdit.getText().toString();
Stringpump= pumpEdit.getText().toString();
Stringtcost= costView.getText().toString();
Stringodometer= odometerEdit.getText().toString();
Stringfcon= fconView.getText().toString();
if(!odometer.trim().equalsIgnoreCase(""))
{
SharedPreferences.Editor editor=sp.edit();
editor.putString("ODO", odometer.trim());
editor.commit();
}
else
{
SharedPreferences.Editor editor=sp.edit();
editor.putString("ODO", "NA");
editor.commit();
}
dbAdaptor.insertLog(date, price, pump, tcost, odometer, fcon);
Intent summaryView=newIntent(getApplicationContext(),ActivityA.class);
startActivity(summaryView);
}
catch(Exception e){
Log.d("Fuel Log", e.getMessage());
}
finally
{
if(dbAdaptor != null)
dbAdaptor.close();
}
}
});
}
publicstaticclassDatePickerFragmentextendsDialogFragmentimplementsDatePickerDialog.OnDateSetListener {
public EditText editText;
DatePicker dpResult;
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the pickerfinalCalendarc= Calendar.getInstance();
intyear= c.get(Calendar.YEAR);
intmonth= c.get(Calendar.MONTH);
intday= c.get(Calendar.DAY_OF_MONTH);
//return new DatePickerDialog(getActivity(), (EditSessionActivity)getActivity(), year, month, day);// Create a new instance of DatePickerDialog and return itreturnnewDatePickerDialog(getActivity(), this, year, month, day);
}
publicvoidonDateSet(DatePicker view, int year, int month, int day) {
dateEdit.setText(String.valueOf(day) + "/"
+ String.valueOf(month + 1) + "/" + String.valueOf(year));
// set selected date into datepicker also
}
}
}
Replace EditResult1 to your class name and also same for XML .
Solution 2:
The simplest way would be to just get the last inserted value, by adding the following function to DBAdapter:
publicStringgetLastOdometer() {
Cursor cursor = db.query(DATABASE_TABLE, newString[] {KEY_ODM}, "rowId=(SELECT MAX(rowId) FROM " + DATABASE_TABLE + ")", null, null, null, null);
try {
if(cursor.moveToNext()) {
return cursor.getString(0);
} else {
returnnull;
}
} finally {
cursor.close();
}
}
Note that it returns null if the table is empty.
But if you want to rely on the dates inserted and not the order in which the data was inserted, you need to make sure that dates can be textually sorted, e.g. by formatting year first, then month and then day (2014-01-20
). Then you can use a query based on getting the latest date: KEY_DATE + "=(SELECT MAX(" + KEY_DATE + ") FROM " + DATABASE_TABLE + ")"
.
After this function is ready, you can call it where you calculate the fuel utilization (just don't forget to open()
and close()
the database).
Post a Comment for "How To Minus Off The Previous Keyed Value(store In Database)"