Skip to content Skip to sidebar Skip to footer

How To Read And Update Sqlite Database Using Listview In Android?

I've been doing research in the internet for 15-20 hours and can't find the answer to this question yet 'How to read and update SQLite database using ListView in Android?' in other

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

enter image description here

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).

enter image description here

Post a Comment for "How To Read And Update Sqlite Database Using Listview In Android?"