0% found this document useful (0 votes)
154 views

Android SQLite ListView With Examples

This document provides code examples for using an SQLite database to store and retrieve user data and display it in a ListView in an Android application. It creates a DbHandler class to perform CRUD operations on a userdetails table using SQLiteOpenHelper. The onCreate method defines the table structure. Methods are provided to insert, get, update, delete user data. Layout files define the UI with EditTexts to add data and a ListView to display it from the database.

Uploaded by

mathyie
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
154 views

Android SQLite ListView With Examples

This document provides code examples for using an SQLite database to store and retrieve user data and display it in a ListView in an Android application. It creates a DbHandler class to perform CRUD operations on a userdetails table using SQLiteOpenHelper. The onCreate method defines the table structure. Methods are provided to insert, get, update, delete user data. Layout files define the UI with EditTexts to add data and a ListView to display it from the database.

Uploaded by

mathyie
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

Android SQLite ListView with Examples

SQLite​ is an open source light weight relational database management system (RDBMS) to perform
database operations, such as storing, updating, retrieving data from database. To know more about
SQLite​, check this ​SQLite Tutorial with Examples​.

Generally, in our android applications ​Shared Preferences​, ​Internal Storage​ and ​External Storage​ options
are useful to store and maintain the small amount of data. In case, if we want to deal with large amount of
data, then ​SQLite database​​ is the preferable option to store and maintain the data in structured format.

To know more about using ​SQLite Database​ in android applications, check this ​Android SQLite Database
Tutorial with Examples​.

Now we will see how to create & insert data into ​SQLite Database​ and how to retrieve and show the data
in custom ​listview​ in android application with examples.

Android SQLite ListView Example

Following is the example of creating the SQLite database, insert and show the details from SQLite
database into ​android listview​ using ​SQLiteOpenHelper​​ class.

Create a new android application using android studio and give names as ​SQLiteExample​​. In case if you
are not aware of creating an app in android studio check this article ​Android Hello World App​.

Once we create an application, create a class file ​DbHandler.java​​ in ​\java\com.tutlane.sqliteexample


path to implement SQLite database related activities for that right click on your application folder à Go to
New​​ à select ​Java Class​​ and give name as ​DbHandler.java​​.

Once we create a new class file ​DbHandler.java​​, open it and write the code like as shown below
DbHandler.java

package ​com.tutlane.sqliteexample;

import ​android.content.ContentValues;

import ​android.content.Context;

import ​android.database.Cursor;

import ​android.database.sqlite.SQLiteDatabase;

import ​android.database.sqlite.SQLiteOpenHelper;

import ​java.util.ArrayList;

import ​java.util.HashMap;

/**

* Created by tutlane on 06-01-2018.

*/

public class ​DbHandler ​extends ​SQLiteOpenHelper {

​private static final int ​DB_VERSION ​= ​1​;

​private static final ​String ​DB_NAME ​= ​"usersdb"​;

​private static final ​String ​TABLE_Users ​= ​"userdetails"​;

​private static final ​String ​KEY_ID ​= ​"id"​;

​private static final ​String ​KEY_NAME ​= ​"name"​;

​private static final ​String ​KEY_LOC ​= ​"location"​;

​private static final ​String ​KEY_DESG ​= ​"designation"​;

​public ​DbHandler(Context context){


​super​(context,​DB_NAME​, ​null​, ​DB_VERSION​);

​@Override

​public void ​onCreate(SQLiteDatabase db){

String CREATE_TABLE = ​"CREATE TABLE " ​+ ​TABLE_Users ​+ ​"("

​+ ​KEY_ID ​+ ​" INTEGER PRIMARY KEY AUTOINCREMENT," ​+ ​KEY_NAME ​+ ​" TEXT,"

​+ ​KEY_LOC ​+ ​" TEXT,"

​+ ​KEY_DESG ​+ ​" TEXT"​+ ​")"​;

db.execSQL(CREATE_TABLE);

​@Override

​public void ​onUpgrade(SQLiteDatabase db, ​int ​oldVersion, ​int ​newVersion){

​// Drop older table if exist

​db.execSQL(​"DROP TABLE IF EXISTS " ​+ ​TABLE_Users​);

​// Create tables again

​onCreate(db);

​// **** CRUD (Create, Read, Update, Delete) Operations ***** //

// Adding new User Details

​void ​insertUserDetails(String name, String location, String designation){

​//Get the Data Repository in write mode

​SQLiteDatabase db = ​this​.getWritableDatabase();

​//Create a new map of values, where column names are the keys
​ContentValues cValues = ​new ​ContentValues();

cValues.put(​KEY_NAME​, name);

cValues.put(​KEY_LOC​, location);

cValues.put(​KEY_DESG​, designation);

​// Insert the new row, returning the primary key value of the new row

​long ​newRowId = db.insert(​TABLE_Users​,​null​, cValues);

db.close();

​// Get User Details

​public ​ArrayList<HashMap<String, String>> GetUsers(){

SQLiteDatabase db = ​this​.getWritableDatabase();

ArrayList<HashMap<String, String>> userList = ​new ​ArrayList<>();

String query = ​"SELECT name, location, designation FROM "​+ ​TABLE_Users​;

Cursor cursor = db.rawQuery(query,​null​);

​while ​(cursor.moveToNext()){

HashMap<String,String> user = ​new ​HashMap<>();

user.put(​"name"​,cursor.getString(cursor.getColumnIndex(​KEY_NAME​)));

user.put(​"designation"​,cursor.getString(cursor.getColumnIndex(​KEY_DESG​)));

user.put(​"location"​,cursor.getString(cursor.getColumnIndex(​KEY_LOC​)));

userList.add(user);

​return ​userList;

}
​// Get User Details based on userid

​public ​ArrayList<HashMap<String, String>> GetUserByUserId(​int ​userid){

SQLiteDatabase db = ​this​.getWritableDatabase();

ArrayList<HashMap<String, String>> userList = ​new ​ArrayList<>();

String query = ​"SELECT name, location, designation FROM "​+ ​TABLE_Users​;

Cursor cursor = db.query(​TABLE_Users​, ​new ​String[]{​KEY_NAME​, ​KEY_LOC​, ​KEY_DESG​},


KEY_ID​+ ​"=?"​,​new ​String[]{String.valueOf(userid)},​null​, ​null​, ​null​, ​null​);

​if ​(cursor.moveToNext()){

HashMap<String,String> user = ​new ​HashMap<>();

user.put(​"name"​,cursor.getString(cursor.getColumnIndex(​KEY_NAME​)));

user.put(​"designation"​,cursor.getString(cursor.getColumnIndex(​KEY_DESG​)));

user.put(​"location"​,cursor.getString(cursor.getColumnIndex(​KEY_LOC​)));

userList.add(user);

​return ​userList;

​// Delete User Details

​public void ​DeleteUser(​int ​userid){

SQLiteDatabase db = ​this​.getWritableDatabase();

db.delete(​TABLE_Users​, ​KEY_ID​+​" = ?"​,​new ​String[]{String.valueOf(userid)});

db.close();

}
​// Update User Details

​public int ​UpdateUserDetails(String location, String designation, ​int ​id){

SQLiteDatabase db = ​this​.getWritableDatabase();

ContentValues cVals = ​new ​ContentValues();

cVals.put(​KEY_LOC​, location);

cVals.put(​KEY_DESG​, designation);

​int ​count = db.update(​TABLE_Users​, cVals, ​KEY_ID​+​" = ?"​,​new ​String[]{String.valueOf(id)});

​return ​count;

If you observe above code, we implemented all ​SQLite Database​ related activities to perform CRUD
operations in android application.

Now open ​activity_main.xml​​ file from ​\res\layout​​ folder path and write the code like as shown below.

activity_main.xml

<?​xml version=​"1.0" ​encoding=​"utf-8"​?>

<​LinearLayout ​xmlns:​android​=​"http://schemas.android.com/apk/res/android"

​android​:orientation=​"vertical" ​android​:layout_width=​"match_parent"

​android​:layout_height=​"match_parent"​>

<​TextView

​android​:id=​"@+id/fstTxt"

​android​:layout_width=​"wrap_content"

​android​:layout_height=​"wrap_content"

​android​:layout_marginLeft=​"100dp"

​android​:layout_marginTop=​"150dp"
​android​:text=​"Name" ​/>

<​EditText

​android​:id=​"@+id/txtName"

​android​:layout_width=​"wrap_content"

​android​:layout_height=​"wrap_content"

​android​:layout_marginLeft=​"100dp"

​android​:ems=​"10"​/>

<​TextView

​android​:id=​"@+id/secTxt"

​android​:layout_width=​"wrap_content"

​android​:layout_height=​"wrap_content"

​android​:text=​"Location"

​android​:layout_marginLeft=​"100dp" ​/>

<​EditText

​android​:id=​"@+id/txtLocation"

​android​:layout_width=​"wrap_content"

​android​:layout_height=​"wrap_content"

​android​:layout_marginLeft=​"100dp"

​android​:ems=​"10" ​/>

<​TextView

​android​:id=​"@+id/thirdTxt"

​android​:layout_width=​"wrap_content"

​android​:layout_height=​"wrap_content"

​android​:text=​"Designation"
​android​:layout_marginLeft=​"100dp" ​/>

<​EditText

​android​:id=​"@+id/txtDesignation"

​android​:layout_width=​"wrap_content"

​android​:layout_height=​"wrap_content"

​android​:layout_marginLeft=​"100dp"

​android​:ems=​"10" ​/>

<​Button

​android​:id=​"@+id/btnSave"

​android​:layout_width=​"wrap_content"

​android​:layout_height=​"wrap_content"

​android​:layout_marginLeft=​"100dp"

​android​:text=​"Save" ​/>

</​LinearLayout​>

Now we will create another layout resource file ​details.xml​​ in ​\res\layout​​ path to show the details in
custom listview​ from ​SQLite Database​ for that right click on your layout folder à Go to ​New​​ à select
Layout Resource File​​ and give name as ​details.xml​​.

Once we create a new layout resource file details.xml, open it and write the code like as shown below
details.xml

<?​xml version=​"1.0" ​encoding=​"utf-8"​?>

<​LinearLayout ​xmlns:​android​=​"http://schemas.android.com/apk/res/android"

​android​:layout_width=​"fill_parent"

​android​:layout_height=​"fill_parent"

​android​:orientation=​"vertical" ​>

<​ListView

​android​:id=​"@+id/user_list"

​android​:layout_width=​"fill_parent"

​android​:layout_height=​"wrap_content"

​android​:dividerHeight=​"1dp" ​/>

<​Button

​android​:id=​"@+id/btnBack"

​android​:layout_width=​"wrap_content"

​android​:layout_height=​"wrap_content"

​android​:layout_gravity=​"center"

​android​:layout_marginTop=​"20dp"

​android​:text=​"Back" ​/>

</​LinearLayout​>

Create an another layout file (​list_row.xml​​) in ​/res/layout​​ folder to show the data in ​listview​, for that right
click on ​layout​​ folder à add new ​Layout resource file​​ à Give name as ​list_row.xml​​ and write the code
like as shown below.
list_row.xml

<?​xml version=​"1.0" ​encoding=​"utf-8"​?>

<​RelativeLayout ​xmlns:​android​=​"http://schemas.android.com/apk/res/android"

​android​:layout_width=​"fill_parent"

​android​:layout_height=​"wrap_content"

​android​:orientation=​"horizontal"

​android​:padding=​"5dip" ​>

<​TextView

​android​:id=​"@+id/name"

​android​:layout_width=​"wrap_content"

​android​:layout_height=​"wrap_content"

​android​:textStyle=​"bold"

​android​:textSize=​"17dp" ​/>

<​TextView

​android​:id=​"@+id/designation"

​android​:layout_width=​"wrap_content"

​android​:layout_height=​"wrap_content"

​android​:layout_below=​"@id/name"

​android​:layout_marginTop=​"7dp"

​android​:textColor=​"#343434"

​android​:textSize=​"14dp" ​/>

<​TextView

​android​:id=​"@+id/location"
​android​:layout_width=​"wrap_content"

​android​:layout_height=​"wrap_content"

​android​:layout_alignBaseline=​"@+id/designation"

​android​:layout_alignBottom=​"@+id/designation"

​android​:layout_alignParentRight=​"true"

​android​:textColor=​"#343434"

​android​:textSize=​"14dp" ​/>

</​RelativeLayout​>

Now open your main activity file ​MainActivity.java​​ from ​\java\com.tutlane.sqliteexample​​ path and write
the code like as shown below
MainActivity.java

package ​com.tutlane.sqliteexample;

import ​android.content.Intent;

import ​android.support.v7.app.AppCompatActivity;

import ​android.os.Bundle;

import ​android.view.View;

import ​android.widget.Button;

import ​android.widget.EditText;

import ​android.widget.Toast;

public class ​MainActivity ​extends ​AppCompatActivity {

EditText ​name​, ​loc​, ​desig​;

Button ​saveBtn​;

Intent ​intent​;

​@Override

​protected void ​onCreate(Bundle savedInstanceState) {

​super​.onCreate(savedInstanceState);

setContentView(R.layout.​activity_main​);

​name ​= (EditText)findViewById(R.id.​txtName​);

​loc ​= (EditText)findViewById(R.id.​txtLocation​);

​desig ​= (EditText)findViewById(R.id.​txtDesignation​);

​saveBtn ​= (Button)findViewById(R.id.​btnSave​);

​saveBtn​.setOnClickListener(​new ​View.OnClickListener() {
​@Override

​public void ​onClick(View v) {

String username = ​name​.getText().toString()+​"​\n​"​;

String location = ​loc​.getText().toString();

String designation = ​desig​.getText().toString();

DbHandler dbHandler = ​new ​DbHandler(MainActivity.​this​);

dbHandler.insertUserDetails(username,location,designation);

​intent ​= ​new ​Intent(MainActivity.​this​,DetailsActivity.​class​);

startActivity(​intent​);

Toast.makeText(getApplicationContext(), ​"Details Inserted


Successfully"​,Toast.​LENGTH_SHORT​).show();

});

If you observe above code, we are taking entered user details and inserting into SQLite database and
redirecting the user to another activity.

Now we will create another activity file ​DetailsActivity.java​​ in ​\java\com.tutlane.sqliteexample​​ path to


show the details from SQLite database for that right click on your application folder à Go to ​New​​ à select
Java Class​​ and give name as ​DetailsActivity.java​​.

Once we create a new ​activity​ file ​DetailsActivity.java​​, open it and write the code like as shown below
DetailsActivity.java

package ​com.tutlane.sqliteexample;

import ​android.content.Intent;

import ​android.os.Bundle;

import ​android.support.v7.app.AppCompatActivity;

import ​android.view.View;

import ​android.widget.Button;

import ​android.widget.ListAdapter;

import ​android.widget.ListView;

import ​android.widget.SimpleAdapter;

import ​java.util.ArrayList;

import ​java.util.HashMap;

/**

* Created by tutlane on 05-01-2018.

*/

public class ​DetailsActivity ​extends ​AppCompatActivity {

Intent ​intent​;

​@Override

​protected void ​onCreate(Bundle savedInstanceState) {

​super​.onCreate(savedInstanceState);

setContentView(R.layout.​details​);
DbHandler db = ​new ​DbHandler(​this​);

ArrayList<HashMap<String, String>> userList = db.GetUsers();

ListView lv = (ListView) findViewById(R.id.​user_list​);

ListAdapter adapter = ​new ​SimpleAdapter(DetailsActivity.​this​, userList, R.layout.​list_row​,​new


String[]{​"name"​,​"designation"​,​"location"​}, ​new int​[]{R.id.​name​, R.id.​designation​, R.id.​location​});

lv.setAdapter(adapter);

Button back = (Button)findViewById(R.id.​btnBack​);

back.setOnClickListener(​new ​View.OnClickListener() {

​@Override

​public void ​onClick(View v) {

​intent ​= ​new ​Intent(DetailsActivity.​this​,MainActivity.​class​);

startActivity(​intent​);

});

If you observe above code, we are getting the details from SQLite database and binding the details to
android listview​. Now we need to add this newly created ​activity​ in ​AndroidManifest.xml​​ file in like as
shown below.
AndroidManifest.xml

<?​xml version=​"1.0" ​encoding=​"utf-8"​?>

<​manifest ​xmlns:​android​=​"http://schemas.android.com/apk/res/android"

​package=​"com.tutlane.sqliteexample"​>

<​application

​android​:allowBackup=​"true"

​android​:icon=​"@mipmap/ic_launcher"

​android​:label=​"@string/app_name"

​android​:roundIcon=​"@mipmap/ic_launcher_round"

​android​:supportsRtl=​"true"

​android​:theme=​"@style/AppTheme"​>

<​activity ​android​:name=​".MainActivity"​>

<​intent-filter​>

<​action ​android​:name=​"android.intent.action.MAIN" ​/>

<​category ​android​:name=​"android.intent.category.LAUNCHER" ​/>

</​intent-filter​>

</​activity​>

<​activity ​android​:name=​".DetailsActivity" ​android​:label=​"SQLite Example - Details"​></​activity​>

</​application​>

</​manifest​>

If you observe above example, we are saving entered details in SQLite database and redirecting the user
to another ​activity​ file (​DetailsActivity.java​​) to show the users details and added all the activities in
AndroidManifest.xml​​ file.
Output of Android SQLite ListView Example

When we run above example in android emulator we will get a result like as shown below.

If you observe above result, the entered user details are storing in SQLite database and redirecting the
user to another ​activity​ file to show the user details from ​SQLite Database​ in ​listview​. After that, if we click
on ​Back​​ button, it will redirect user to login page.

This is how we can get the data from SQLite database and bind it to custom ​listview​ in android
applications based on our requirements.

Reference
1. https://www.tutlane.com/tutorial/android/android-sqlite-listview-with-examples

You might also like