1

i want to display data from SQLite database to my custom listview

this my activity:

public class Main_activity extends Activity implements OnItemClickListener{


public static final String[] titles = new String[] { "Strawberry",
    "Banana", "Orange" };

public static final String[] descriptions = new String[] {
    "It is an aggregate accessory fruit",
    "It is the largest herbaceous flowering plant", "Citrus Fruit"
    };


ListView listView;
List<RowItem> rowItems;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);


rowItems = new ArrayList<RowItem>();
for (int i = 0; i < titles.length; i++) {
    RowItem item = new RowItem(titles[i], descriptions[i]);
    rowItems.add(item);
}

listView = (ListView) findViewById(R.id.list);
CustomBaseAdapter adapter = new CustomBaseAdapter(this, rowItems);
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);


}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
    long id) {
Toast toast = Toast.makeText(getApplicationContext(),
        "Item " + (position + 1) + ": " + rowItems.get(position),
        Toast.LENGTH_SHORT);
toast.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
}

in this activity, listview will showing data from string titles and description, now i want replace those string, with my data from sqlite database. can anyone tell me how can to do that ?

provide tutorial links that lead to the problem is also very helpful

1
  • Access your sqlite database using cursor. Iterate cursor for getting all data and add those data in list. Is you want multiple data , then create cutim list. Commented Apr 26, 2014 at 4:05

1 Answer 1

7

Create database

 public class DatabaseHandler extends SQLiteOpenHelper {

        //Database Version
        private static final int DATABASE_VERSION = 1;
        //Database Name
        private static final String DATABASE_NAME = "Test";
        //Table Name
        private static final String TABLE_TEST = "TestTable";
        //Column Name
        private static final String KEY_ID = "id";
        private static final String KEY_NAME = "name";
        private static final String KEY_AGE = "age";

        public DatabaseHandler(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        //Create Table
        @Override
        public void onCreate(SQLiteDatabase db) {
            String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_TEST + "("
                    + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
                    + KEY_AGE + " TEXT" + ")";
            db.execSQL(CREATE_CONTACTS_TABLE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_TEST);
            onCreate(db);
        }

        //Insert Value
        public void adddata(Context context,String movieId,String songId) {
            SQLiteDatabase db = this.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put(KEY_NAME, movieId);
            values.put(KEY_AGE, songId); 
            db.insert(TABLE_TEST, null, values);
            db.close(); 
        }

        //Get Row Count
        public int getCount() {
            String countQuery = "SELECT  * FROM " + TABLE_TEST;
            int count = 0;
            SQLiteDatabase db = this.getReadableDatabase();
            Cursor cursor = db.rawQuery(countQuery, null);
            if(cursor != null && !cursor.isClosed()){
                count = cursor.getCount();
                cursor.close();
            }   
            return count;
        }

        //Delete Query
        public void removeFav(int id) {
            String countQuery = "DELETE FROM " + TABLE_TEST + " where " + KEY_ID + "= " + id ;
            SQLiteDatabase db = this.getReadableDatabase();
            db.execSQL(countQuery);
        }

        //Get FavList
        public List<FavoriteList> getFavList(){
            String selectQuery = "SELECT  * FROM " + TABLE_TEST;
            SQLiteDatabase db = this.getWritableDatabase();
            Cursor cursor = db.rawQuery(selectQuery, null);
            List<FavoriteList> FavList = new ArrayList<FavoriteList>();
            if (cursor.moveToFirst()) {
                do {
                    FavoriteList list = new FavoriteList();
                    list.setId(Integer.parseInt(cursor.getString(0)));
                    list.setName(cursor.getString(1));
                    list.setAge(cursor.getString(2));
                    FavList.add(list);
                } while (cursor.moveToNext());
            }
            return FavList;
        }
}

and create custom listview using base adapter like below

public class ViewAdapter extends BaseAdapter {

        LayoutInflater mInflater;

        public ViewAdapter() {
            mInflater = LayoutInflater.from(context);
        }

        @Override
        public int getCount() {
            return favoriteList.size();
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {

            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.listitem,null);
            }

            final TextView nameText = (TextView) convertView.findViewById(R.id.nameText);
            nameText.setText("Name : "+favoriteList.get(position).getName());
            final TextView ageText = (TextView) convertView.findViewById(R.id.ageText);
            ageText.setText("Age : "+favoriteList.get(position).getAge());

            final Button edit = (Button) convertView.findViewById(R.id.edit);
            edit.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    final Dialog dialog = new Dialog(context);
                    dialog.setContentView(R.layout.row);
                    dialog.setTitle("Add Data to Database");
                    final EditText name = (EditText) dialog.findViewById(R.id.name);
                    final EditText age = (EditText) dialog.findViewById(R.id.age);
                    Button Add = (Button) dialog.findViewById(R.id.Add);
                    Add.setText("Add");
                    Add.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            if(name.getText().toString() != null && name.getText().toString().length() >0 ){
                                if(age.getText().toString() != null && age.getText().toString().length() >0 ){
                                    db.updateRow(favoriteList.get(position).getId(), name.getText().toString(), age.getText().toString());
                                    favoriteList = db.getFavList();
                                    listView.setAdapter(new ViewAdapter());
                                    dialog.dismiss();
                                }else{
                                    Toast.makeText(getApplicationContext(), "Please Enter the Age", Toast.LENGTH_LONG).show();  
                                }
                            }else{
                                Toast.makeText(getApplicationContext(), "Please Enter the Name", Toast.LENGTH_LONG).show(); 
                            }
                        }
                    });
                    dialog.show();  
                }
            });
            final Button delete = (Button) convertView.findViewById(R.id.delete);
            delete.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    db.removeFav(favoriteList.get(position).getId());
                    notifyDataSetChanged();
                    favoriteList = db.getFavList();
                    listView.setAdapter(new ViewAdapter());
                }
            });
            return convertView;
        }
    }

Get data from database:

favoriteList = db.getFavList();

finally add adapter

listView.setAdapter(new ViewAdapter());

If you need more help please see the below Url

http://mylearnandroid.blogspot.in/2014/04/android-sqlite-with-custom-listview.html

Sign up to request clarification or add additional context in comments.

1 Comment

i have small question: what it is R.id.name ...... where as there is no such id is written in xml and simularly Add is not written????. plz specify as i am also new in android. also what is row in dialog.setContentView(R.layout.row);?????????

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.