How To Read And Update Sqlite Database Using Listview In Android?
Solution 1:
This should be removed.
Intent launchActivity = newIntent(MainActivityPlanes.this, MainActivityChampagne.class);
startActivity(launchActivity);
And you have this
publicclassMainActivityChampagne
Your MainActivityChampagne
class does not extend activity. It's a non activity class.
To set data to listview.
MainActivityChampagnedb=newMainActivityChampagne(MainActivityPlanes.this);
db.open();
ArrayList<String> list = db.getData();
Now use the list to set the data to listview.
Define row.xml with a textview with id textView1.
ArrayAdapter<String> adapter = newArrayAdapter<String>(MainActivityPlanes.this, R.layout.row, R.id.textView1,list);
List = (ListView) findViewById(R.id.listView1);
List.setAdapter(adapter);
Once you set the adapter to listview.
List.setOnItemClickListener(new OnItemClickListener() {
publicvoidonItemClick(AdapterView<?> listView, View itemView, int itemPosition, long itemId)
{
. // on list item click do what is necessary
}
});
Edit:
row.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:layout_marginLeft="114dp"android:layout_marginTop="30dp"android:text="TextView" /></RelativeLayout>
Snap shot
Edit2 : The update is fixed. However you need to modify the below according to your needs.
publicclassMainActivityChampagne {
publicstaticfinalStringKEY_NAME="title";
publicstaticfinalStringKEY_NOTES="lastcall";
privatestaticfinalStringDATABASE_NAME="Champagnedb5";
privatestaticfinalStringDATABASE_TABLE="champagneTable";
privatestaticfinalintDATABASE_VERSION=1;
privatestaticfinalStringKEY_ID="id";
private DbHelper ourHelper;
privatefinal Context ourContext;
private SQLiteDatabase ourDatabase;
privatestaticclassDbHelperextendsSQLiteOpenHelper{
publicDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@OverridepublicvoidonCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub\
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
KEY_NAME + " TEXT NOT NULL," +
KEY_NOTES + " TEXT NOT NULL" + ");"
);
}
@OverridepublicvoidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXIST " + DATABASE_TABLE);
onCreate(db);
}
}
publicMainActivityChampagne(Context c){
ourContext = c;
}
public MainActivityChampagne open(){
ourHelper = newDbHelper(ourContext);
ourDatabase = ourHelper.getWritableDatabase();
returnthis;
}
publicvoidclose(){
ourHelper.close();
}
publiclongcreateEntry(String titles, String notes) {
// TODO Auto-generated method stubContentValuescv=newContentValues();
cv.put(KEY_NAME, titles);
cv.put(KEY_NOTES, notes);
return ourDatabase.insert(DATABASE_TABLE, null, cv);
}
public ArrayList<String> getData() {
//TODO Auto-generated method stub
String[] columns = newString[] { KEY_NAME };
Cursorc= ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
Stringresult="";
intiNotes= c.getColumnIndex(KEY_NAME);
ArrayList<String> string_array = newArrayList<String>();
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext())
{
result = c.getString (iNotes) + "\n";
string_array.add(result);
}
return string_array;
}
publicvoidupdateEntry(String thetitles, String thenotes) {
// TODO Auto-generated method stubContentValuescvUpdate=newContentValues();
cvUpdate.put(KEY_NAME, thetitles);
cvUpdate.put(KEY_NOTES, thenotes);
ourDatabase.update(DATABASE_TABLE, cvUpdate, "id "+"="+1, null);
// this will update row 1 coz id is 1. //ourDatabase.update(DATABASE_TABLE, cvUpdate, KEY_NAME + "=" + thetitles + KEY_NOTES + "=" + thenotes, null);
}
}
Solution 2:
Here Is Your Edited Working Code
MainActivityChampagne.java
package android.application.project.planes;
import java.util.ArrayList;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
publicclassMainActivityChampagne {
publicstaticfinalStringKEY_NAME="title";
publicstaticfinalStringKEY_NOTES="lastcall";
privatestaticfinalStringDATABASE_NAME="Champagnedb";
privatestaticfinalStringDATABASE_TABLE="champagneTable";
privatestaticfinalintDATABASE_VERSION=1;
private DbHelper ourHelper;
privatefinal Context ourContext;
private SQLiteDatabase ourDatabase;
privatestaticclassDbHelperextendsSQLiteOpenHelper {
publicDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@OverridepublicvoidonCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub\
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_NAME
+ " TEXT NOT NULL);");
}
@OverridepublicvoidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXIST " + DATABASE_TABLE);
onCreate(db);
}
}
publicMainActivityChampagne(Context c) {
ourContext = c;
}
public MainActivityChampagne open() {
ourHelper = newDbHelper(ourContext);
ourDatabase = ourHelper.getWritableDatabase();
returnthis;
}
publicvoidclose() {
ourHelper.close();
}
publiclongcreateEntry(String titles, String notes) {
// TODO Auto-generated method stubContentValuescv=newContentValues();
cv.put(KEY_NAME, titles);
return ourDatabase.insert(DATABASE_TABLE, null, cv);
}
public ArrayList<String> getData() {
// TODO Auto-generated method stub
String[] columns = newString[] { KEY_NAME };
Cursorc= ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
null, null);
Stringresult="";
intiNotes= c.getColumnIndex(KEY_NAME);
ArrayList<String> string_array = newArrayList<String>();
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
result = c.getString(iNotes) + "\n";
string_array.add(result);
}
return string_array;
}
publicvoidupdateEntry(String thetitles, String thenotes) {
// TODO Auto-generated method stubContentValuescvUpdate=newContentValues();
cvUpdate.put(KEY_NAME, thetitles);
/* cvUpdate.put(KEY_NOTES, thenotes); *//*
* ourDatabase.update(DATABASE_TABLE, cvUpdate, KEY_NAME + "=" +
* thetitles + KEY_NOTES + "=" + thenotes, null);
*/
ourDatabase.update(DATABASE_TABLE, cvUpdate, KEY_NAME + "='"
+ thetitles + "'", null);
}
}
MainActivityPaper.java
package android.application.project.planes;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
publicclassMainActivityPaperextendsActivityimplementsOnClickListener {
TextView text1, title1;
Button save1, update1;
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main_activity_paper);
text1 = (TextView) findViewById(R.id.editText1);
title1 = (TextView) findViewById(R.id.editText3);
save1 = (Button) findViewById(R.id.button3);
update1 = (Button) findViewById(R.id.button5);
save1.setOnClickListener(this);
update1.setOnClickListener(this);
}
@OverridepublicvoidonClick(View arg0) {
// TODO Auto-generated method stubswitch (arg0.getId()) {
case R.id.button3:
Stringtitles= title1.getText().toString();
Stringnotes= text1.getText().toString();
MainActivityChampagneentry=newMainActivityChampagne(
MainActivityPaper.this);
entry.open();
entry.createEntry(titles, notes);
entry.close();
break;
case R.id.button5:
Stringthetitles= title1.getText().toString();
Stringthenotes= text1.getText().toString();
MainActivityChampagneup=newMainActivityChampagne(
MainActivityPaper.this);
up.open();
up.updateEntry(thetitles, thenotes);
up.close();
break;
}
}
}
MainActivityPlanes.java
package android.application.project.planes;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
publicclassMainActivityPlanesextendsActivity {
Button Add;
ListView List;
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main_activity_planes);
Add = (Button) findViewById(R.id.button1);
List = (ListView) findViewById(R.id.listView1);
List.setOnItemClickListener(newOnItemClickListener() {
@OverridepublicvoidonItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stubIntentlaunchActivity=newIntent(MainActivityPlanes.this,
MainActivityPaper.class);
startActivity(launchActivity);
}
});
Add.setOnClickListener(newOnClickListener() {
publicvoidonClick(View v) {
Intentintent=newIntent(getApplicationContext(),
MainActivityPaper.class);
startActivityForResult(intent, 0);
}
});
MainActivityChampagneinfo=newMainActivityChampagne(this);
info.open();
ArrayList<String> data = info.getData();
info.close();
ArrayAdapter<String> arrayAdapter = newArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, data);
List.setAdapter(arrayAdapter);
}
}
Here What is wrong in your code is SQLite Database queries. You are created only on row in that table and trying to compare two values while updating. You just check you code you will be able to modify according to that. Hope this will help.
Add the Following code to make your list-view on-click working
Add the following code in MainActivityPlanes.java
List.setOnItemClickListener(newOnItemClickListener() {
@OverridepublicvoidonItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Stringstr1= List.getItemAtPosition(arg2).toString();
System.out.println(str1);
Bundlebucket=newBundle();
bucket.putString("my_key", str1);
// TODO Auto-generated method stubIntentlaunchActivity=newIntent(MainActivityPlanes.this,
MainActivityPaper.class);
launchActivity.putExtras(bucket);
startActivity(launchActivity);
}
});
Add the Following code in MainActivityPaper.java
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main_activity_paper);
text1 = (TextView) findViewById(R.id.editText1);
Strings=null;
try{
Bundleb=this.getIntent().getExtras();
s= b.getString("my_key");
}catch(Exception e){
s="";
e.printStackTrace();
}finally{
text1.setText(s.toString());
}
title1 = (TextView) findViewById(R.id.editText3);
save1 = (Button) findViewById(R.id.button3);
update1 = (Button) findViewById(R.id.button5);
save1.setOnClickListener(this);
update1.setOnClickListener(this);
}
Hope this will solve your problem.
Solution 3:
Answering a question you didn't ask yet, but causing one of your problems is a missing declaration of MainActivityChampagne in your manifest. Needless to say, the crash log is correct (text search your manifest for "MainActivityChampagne" and you have zero hits).
Post a Comment for "How To Read And Update Sqlite Database Using Listview In Android?"