DEV'S

Shopping List App Version 2.9 - SQlite - SimpleCursorAdapter

Project Structure

MyDB.java
package com.dev.sqlite.example;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;

public class MyDB {

	public static final String DB_NAME = "my.db";
	public static final String SHOPPING_TBL = "shopping_tbl";
	public static final String ITEM_ID = "_id";
	public static final String ITEM_NAME = "item_name";
	public static final String ITEM_QTY = "item_qty";
	public static final String ITEM_PRICE = "item_price";
	public static final String ITEM_NOTES = "item_notes";
	public static final String CREATE_TBL = "CREATE table " + SHOPPING_TBL
			+ " (" + ITEM_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
			+ ITEM_NAME + " TEXT NOT NULL, " + ITEM_PRICE + " REAL NOT NULL, "
			+ ITEM_QTY + " REAL NOT NULL, " + ITEM_NOTES + " TEXT NOT NULL)";
	public static final int DB_VER = 2;
	private MyDBHelper dbHelper;
	private SQLiteDatabase db;
	private String[] columns = new String[] { ITEM_ID, ITEM_NAME, ITEM_NOTES,
			ITEM_PRICE, ITEM_QTY };

	public static final int ADDITEM_REQ_CODE = 1334;
	public static final int ADDITEM_RESULT_CODE = 1335;
	public static final int EDIT_ITEM_REQ_CODE = 1336;
	public static final int EDIT_ITEM_RESULT_CODE = 1337;
	public static final String TAG = "ShoppingList2.9";
	public static final String ITEM_INDEX = "item_index";
	public static final String ITEM_DATA_FULL = "item_data_full";
	public static final String ITEM_DATA_DEFAULT_VALUE = "[]";
	public static final int ITEM_NEW = -1;
	public static final int ITEM_EDIT = 324;
	public static final int ITEM_DELETE = 325;
	public static final int ITEM_READONLY = 326;

	public MyDB(Context context) {
		dbHelper = new MyDBHelper(context);
	}

	public void open() throws SQLException {
		db = dbHelper.getWritableDatabase();
	}

	public void close() {
		db.close();
	}

	public Cursor getItemById(int item_id) {
		String qry = "SELECT * FROM " + SHOPPING_TBL + " WHERE " + ITEM_ID
				+ " = ? AND " + ITEM_NAME + " = ?";
		Cursor c = db.rawQuery(qry, new String[] { item_id + "", "apple" });
		return c;
	}

	public Cursor getItemByIdNew(int item_id) {
		Cursor c = db.query(SHOPPING_TBL, columns, ITEM_ID + " = ?",
				new String[] { Integer.toString(item_id) }, null, null, null,
				null);
		return c;
	}

	public Cursor getAllItems() {
		Cursor c = db.query(SHOPPING_TBL, columns, null, null, null, null,
				null, null);
		return c;
	}

	public long addItem(String itemName, Double itemPrice, Double itemQty,
			String itemNotes) {
		ContentValues contentValues = new ContentValues();
		contentValues.put(ITEM_NAME, itemName);
		contentValues.put(ITEM_PRICE, itemPrice);
		contentValues.put(ITEM_QTY, itemQty);
		contentValues.put(ITEM_NOTES, itemNotes);
		return db.insert(SHOPPING_TBL, null, contentValues);
	}

	public int updateItem(int itemId, String itemName, Double itemPrice,
			Double itemQty, String itemNotes) {
		ContentValues contentValues = new ContentValues();
		contentValues.put(ITEM_NAME, itemName);
		contentValues.put(ITEM_PRICE, itemPrice);
		contentValues.put(ITEM_QTY, itemQty);
		contentValues.put(ITEM_NOTES, itemNotes);
		return db.update(SHOPPING_TBL, contentValues, ITEM_ID + " = ?",
				new String[] { Integer.toString(itemId) });
	}

	public int deleteItem(int itemId) {
		return db.delete(SHOPPING_TBL, ITEM_ID + " = ?",
				new String[] { Integer.toString(itemId) });
	}

	private class MyDBHelper extends SQLiteOpenHelper {

		public MyDBHelper(Context context) {
			super(context, DB_NAME, null, DB_VER);
			// TODO Auto-generated constructor stub

		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			// TODO Auto-generated method stub
			db.execSQL(CREATE_TBL);
			Log.d(DB_NAME, "DB CREATED");
			Log.d(DB_NAME, CREATE_TBL + " executed!!");
		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			// TODO Auto-generated method stub
			db.execSQL("DROP TABLE IF EXISTS " + SHOPPING_TBL);
			onCreate(db);
			Log.d(DB_NAME, "Dropped and recreated!!!");
		}

	}

	public static void displayMessage(Context context, String text) {
		Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
	}

}

MainActivity.java

package com.dev.sqlite.example;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class MainActivity extends ActionBarActivity {

	private ListView itemList;
	private MyDB db;
	private SimpleCursorAdapter adapter;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.shoppinglist_activity);
		setTitle("Welcome");
		db = new MyDB(this);
		db.open();
		itemList = (ListView) findViewById(R.id.itemlist);
		itemList.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				// TODO Auto-generated method stub

			}
		});
		Cursor cursor = db.getAllItems();
		adapter = new SimpleCursorAdapter(this, R.layout.list_item, cursor,
				new String[] { MyDB.ITEM_NAME, MyDB.ITEM_QTY }, new int[] {
						R.id.i_name, R.id.i_qty }, 0);
		itemList.setAdapter(adapter);
		registerForContextMenu(itemList);
		getAllItemsFromDB();
	}

	private void getAllItemsFromDB() {

		Cursor cursor = db.getAllItems();
		cursor.moveToFirst();
		for (int i = 0; i < cursor.getCount(); i++) {
			Log.w(MyDB.ITEM_NAME,
					cursor.getString(cursor.getColumnIndex(MyDB.ITEM_NAME)));
			Log.w(MyDB.ITEM_ID,
					cursor.getLong(cursor.getColumnIndex(MyDB.ITEM_ID)) + "");
			cursor.moveToNext();
		}

		cursor.close();

	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		db.close();
	}

	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		// TODO Auto-generated method stub
		menu.add(Menu.NONE, MyDB.ITEM_EDIT, 0,
				getResources().getString(R.string.item_edit_menu));
		menu.add(Menu.NONE, MyDB.ITEM_DELETE, 0,
				getResources().getString(R.string.item_delete_menu));
		super.onCreateContextMenu(menu, v, menuInfo);
	}

	@Override
	public boolean onContextItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
				.getMenuInfo();
		switch (item.getItemId()) {
		case MyDB.ITEM_EDIT:
			// Utility.displayMessage(this,

			break;
		case MyDB.ITEM_DELETE:
			displayAlertDialog(info.position);

			break;
		default:
			break;
		}

		return super.onContextItemSelected(item);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// TODO Auto-generated method stub
		getMenuInflater().inflate(R.menu.shoppinglist_menu, menu);
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		switch (requestCode) {
		case MyDB.ADDITEM_REQ_CODE:
			if (resultCode == MyDB.ADDITEM_RESULT_CODE) {
				MyDB.displayMessage(this, getString(R.string.success_toast));
				getAllItemsFromDB();
				Cursor cursor = db.getAllItems();
				adapter.changeCursor(cursor);

			} else {
				MyDB.displayMessage(this,
						getResources().getString(R.string.noitem_toast));
			}
			break;
		case MyDB.EDIT_ITEM_REQ_CODE:
			if (resultCode == MyDB.EDIT_ITEM_RESULT_CODE) {

				getAllItemsFromDB();
				Cursor cursor = db.getAllItems();
				adapter.changeCursor(cursor);
			} else {
				MyDB.displayMessage(this,
						getResources().getString(R.string.noedit_toast));
			}
			break;
		default:
			break;
		}
	}

	private void displayAlertDialog(final int position) {

		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle(R.string.alert_title);
		builder.setMessage(R.string.alert_msg);
		builder.setPositiveButton(R.string.alert_delete,
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub

					}
				});
		builder.setNegativeButton(R.string.alert_cancel,
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub

					}
				});
		AlertDialog alertDialog = builder.create();
		alertDialog.show();
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		switch (item.getItemId()) {
		case R.id.additem:
			Intent intent = new Intent(this, ItemActivity.class);
			startActivityForResult(intent, MyDB.ADDITEM_REQ_CODE);
			break;
		case R.id.myaccount:

			break;
		case R.id.settings:

			break;
		case R.id.aboutus:

			break;
		default:
			break;
		}

		return super.onOptionsItemSelected(item);
	}

}

ItemActivity.java

package com.dev.sqlite.example;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class ItemActivity extends Activity {

	private EditText itemName;
	private EditText itemQty;
	private EditText itemPrice;
	private EditText itemNotes;
	private int item_id = MyDB.ITEM_NEW;
	private int item_position = MyDB.ITEM_NEW;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.item_activity);
		setTitle(getResources().getString(R.string.item_add));
		itemName = (EditText) findViewById(R.id.itemname);
		itemQty = (EditText) findViewById(R.id.itemqty);
		itemPrice = (EditText) findViewById(R.id.itemprice);
		itemNotes = (EditText) findViewById(R.id.itemnotes);
		Button save = (Button) findViewById(R.id.save);

		Bundle extras = getIntent().getExtras();
		if (extras != null) {
			save.setText(R.string.item_edit_menu);
			setTitle(getResources().getString(R.string.item_edit));

			item_id = extras.getInt(MyDB.ITEM_ID);
			if (extras.getInt(MyDB.ITEM_INDEX) == MyDB.ITEM_READONLY) {
				save.setVisibility(Button.GONE);
				setTitle(getResources().getString(R.string.item_view));
			} else {
				item_position = extras.getInt(MyDB.ITEM_INDEX);
			}

		}
		save.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				if (itemName.getText().toString().length() > 0
						&& itemQty.getText().toString().length() > 0
						&& itemPrice.getText().toString().length() > 0
						&& itemNotes.getText().toString().length() > 0) {
					MyDB db = new MyDB(ItemActivity.this);

					Intent intent = new Intent();

					if (item_id == MyDB.ITEM_NEW) {
						db.open();
						db.addItem(
								itemName.getText().toString(),
								Double.parseDouble(itemPrice.getText()
										.toString()),
								Double.parseDouble(itemQty.getText().toString()),
								itemNotes.getText().toString());
						db.close();
						setResult(MyDB.ADDITEM_RESULT_CODE, intent);
					} else {
						db.open();
						db.updateItem(item_id, itemName.getText().toString(),
								Double.parseDouble(itemPrice.getText()
										.toString()), Double
										.parseDouble(itemQty.getText()
												.toString()), itemNotes
										.getText().toString());
						db.close();
						intent.putExtra(MyDB.ITEM_INDEX, item_position);
						setResult(MyDB.EDIT_ITEM_RESULT_CODE, intent);
					}
					finish();
				} else {
					MyDB.displayMessage(ItemActivity.this,
							"Empty fields not allowed!!");
				}
			}
		});
	}
}

shoppinglist_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <TextView
        android:id="@+id/instruction"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/instruction" />

    <ListView
        android:id="@+id/itemlist"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

item_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/itemname"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:hint="@string/enteritemname"
            android:inputType="text" />

        <EditText
            android:id="@+id/itemqty"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:hint="@string/enteritemqty"
            android:inputType="number" />

        <EditText
            android:id="@+id/itemprice"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:hint="@string/enteritemcost"
            android:inputType="numberDecimal" />

        <EditText
            android:id="@+id/itemnotes"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_margin="10dp"
            android:hint="@string/enteritemnotes"
            android:inputType="text" />

        <Button
            android:id="@+id/save"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/save" />
    </LinearLayout>

</ScrollView>

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="3"
        android:orientation="vertical" 
        android:layout_marginLeft="10dp"
        >

        <TextView
            android:id="@+id/i_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/item_name_placeholder"
            android:textColor="#DF0101"
            android:textSize="20sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/i_qty"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:padding="5dp"
            android:text="@string/item_qty_placeholder"
            android:textColor="#04B431" />
    </LinearLayout>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:contentDescription="@string/app_name"
        android:src="@drawable/icon" />

</LinearLayout>

shoppinglist_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/additem"
        android:title="@string/additem"/>
    <item
        android:id="@+id/myaccount"
        android:title="@string/myaccount"/>
    <item
        android:id="@+id/settings"
        android:title="@string/settings"/>
    <item
        android:id="@+id/aboutus"
        android:title="@string/aboutus"/>

</menu>

strings.xml

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

    <string name="app_name">SQLiteExample</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="instruction">Press Menu to Add an Item</string>
    <string name="additem">Add Item</string>
    <string name="myaccount">My Account</string>
    <string name="settings">Settings</string>
    <string name="aboutus">About</string>
    <string name="enteritemname">Enter Item name here</string>
    <string name="enteritemqty">Enter Item Qty</string>
    <string name="enteritemcost">Enter Item cost here</string>
    <string name="enteritemnotes">Additional notes here</string>
    <string name="save">Save</string>
    <string name="item_name_placeholder">Item Name here</string>
    <string name="item_qty_placeholder">Qty here</string>
    <string name="item_add">Add new item here!</string>
    <string name="item_edit">Edit item here!</string>
    <string name="item_view">Item Info</string>
    <string name="item_edit_menu">Edit</string>
    <string name="item_delete_menu">Delete</string>
    <string name="success_toast">Item successfully added!</string>
    <string name="noitem_toast">User did not add any item!</string>
    <string name="noedit_toast">User did not Edit any item!</string>
    <string name="alert_title">Alert!!!</string>
    <string name="alert_msg">Do you really want to delete this entry?</string>
    <string name="alert_delete">Delete</string>
    <string name="alert_cancel">Cancel</string>

</resources>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dev.sqlite.example"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".ItemActivity"></activity>
    </application>

</manifest>

Android

2018-11-27 21:26:06
1) Android Videos
2018-07-09 06:40:27
2) 09 Jul - Classroom Videos
2018-07-06 21:15:16
3) Recommended Videos
2018-07-06 21:00:45
4) Classroom Videos
2018-06-21 23:15:31
5) ViewPager TabStrip - TabLayout
2018-06-21 22:19:12
6) AsyncTask Filedownload
2018-06-21 19:54:27
7) Service Connection - Bind Service
2018-06-21 03:08:05
8) Instrumentation Test
2018-06-20 22:10:24
9) ApiDoc - Shopping List App
2018-06-20 22:08:56
10) AsyncTask - PreferenceManager - Example
2018-06-20 20:02:07
11) Fragments - RecyclerView Examples UnitTesting- Part 4
2018-06-20 19:59:57
12) Fragments - RecyclerView Examples -Database - Part 3
2018-06-20 19:59:00
13) Fragments - RecyclerView Examples - Part 2
2018-06-20 19:52:33
14) Fragments - RecyclerView Examples - Part 1
2018-06-19 23:52:14
15) Customize Adapter Example
2018-06-19 22:58:07
16) SimpleAdapter - HashMap Data Type
2018-06-19 03:39:01
17) ListView Add-Edit Example
2018-06-19 02:25:02
18) OptionMenu - Background - Shape
2018-06-18 23:53:27
19) SetActivityForResult Example
2018-06-18 21:33:01
20) Android Button Event
2018-06-18 03:19:58
21) Android Calculator View - Activity LifeCycle
2018-06-15 02:59:14
22) ViewPager - TabLayout Example
2018-06-15 00:14:08
23) Broadcast Receiver SMSManager
2018-06-14 22:58:22
24) Android Location Aware Apps - OnScreen Permission
2018-06-14 05:13:06
25) Sqlite Example - SimpleCursor Adapter
2018-06-14 03:03:36
26) Fragment - NavigationDrawer Example
2018-06-13 22:51:12
27) WebService POST
2018-06-13 05:07:48
28) WebService GET Example
2018-06-13 03:26:20
29) Service - Broadcast Receiver - SimpleAdapter
2018-06-12 23:00:54
30) ListView Add Edit Delete
2018-06-12 04:40:31
31) Background - SharedPreferences
2018-06-12 03:15:15
32) ActionBar - Option Menu
2018-06-12 01:05:30
33) RelativeLayout - ScrollView - Intent -Bundle
2018-06-11 03:38:21
34) Calculator App - Part 2
2018-06-11 00:19:59
35) Calculator Layout - Part 1
2018-05-15 03:07:50
36) Kotlin - Functional Programming Best Practices
2018-05-15 01:10:02
37) Shopping App - Kotlin - Companion Object
2018-05-14 23:51:41
38) Shopping App - Kotlin - Java SAM Interface To Lambda
2018-05-14 20:58:14
39) ShoppingList App - Api Doc
2018-05-14 01:03:11
40) Kotlin - Activities - UI Building - WebService - AsyncTask
2018-05-13 23:53:26
41) Kotlin Classes - Inheritance
2018-01-24 01:18:09
42) IOS - Performance Tuning - Best Practices
2018-01-24 00:07:33
43) Google API Pricing Plan
2018-01-24 00:03:21
44) Firebase Integration - App Analytics
2018-01-23 03:39:46
45) Profiling - Best Practices - Service - Broadcast Receiver - Document -PDF
2018-01-23 03:24:36
46) Broadcast Receiver - Profiling - Unregister - Reduce Memory Leak
2018-01-23 00:20:06
47) Background Service - Use Of LocationListener - Run Time Permission Check - Best Practice
2018-01-22 22:39:07
48) Android Memory Profiling - Performance Improvement - Handler - Runnable
2018-01-22 21:24:46
49) Android Performance Improvement Techniques - PDF Document
2018-01-22 04:50:44
50) Best Practice To Add Smooth View Pan And Communicate Between Activities
2018-01-22 02:50:35
51) Layout Technique - Activity LifeCycle
2017-12-11 05:23:14
52) ShoppingList App - Fragment - Part 5
2017-12-11 05:08:05
53) Feedback
2017-12-11 03:25:52
54) ShoppingList App - RecyclerView - Part 4
2017-12-11 00:27:38
55) ShoppingList App - DrawerLayout - Part 3 - Drawables - Menus - Gradle Configs
2017-12-11 00:23:30
56) ShoppingList App - DrawerLayout - Part 2 - Layouts
2017-12-11 00:20:50
57) ShoppingList App - DrawerLayout - Part 1
2017-12-10 21:17:56
58) ShoppingList App - Api Calls
2017-12-08 03:32:57
59) App - AsyncTast Part 2
2017-12-08 01:32:57
60) App - AsyncTast Part 1
2017-12-07 23:06:12
61) WebService GET - JSON Parsing
2017-12-07 04:51:25
62) Service And Broadcast Receiver
2017-12-06 22:49:06
63) Sqlite DB Example - ListView - Complex Form
2017-12-06 00:23:16
64) ListView - Adapters
2017-12-05 22:44:14
65) ActionBar Option Menu
2017-12-05 03:22:37
66) Multiple Activities
2015-11-19 02:45:01
67) Generate APK
2015-11-18 09:47:41
68) ShoppingList - Cloud App - WebService POST - Final
2015-11-17 13:29:54
69) Creating Swipe Views With Tabs Using ViewPager And TabLayout
2015-11-17 08:00:24
70) TabHost Using Fragment
2015-11-17 03:41:10
71) ShoppingList - Cloud App - WebService POST Example
2015-11-16 03:02:07
72) Camera - Gallery - Intent Calling - Customised Adapter
2015-11-13 08:36:20
73) Android Broadcast Receiver - SMS And Call
2015-11-12 13:17:25
74) WebService Example - HttpURLConnection Example
2015-11-12 13:11:57
75) Android Location Services - Foreground And Background Example
2015-11-11 23:04:58
76) ShoppingList App - Sqlite
2015-11-09 23:23:00
77) ShoppingList App - Continued
2015-11-09 04:09:50
78) ListView - ShoppingList App
2015-11-08 22:23:23
79) Android Layouts - Revisit
2015-03-25 04:05:46
80) Overriding Theme - ActionBar And Tab
2015-03-14 02:45:58
81) SMSReplier - V1.0 - Service - Intent Share - Phone - WhiteList - ReplyLog Addon - Part4
2015-03-14 02:44:07
82) SMSReplier - V1.0 - Service - Intent Share - Phone - WhiteList - ReplyLog Addon - Part3
2015-03-14 02:34:48
83) SMSReplier - V1.0 - Service - Intent Share - Phone - WhiteList - ReplyLog Addon - Part2
2015-03-14 02:30:01
84) SMSReplier - V1.0 - Service - Intent Share - Phone - WhiteList - ReplyLog Addon - Part1
2015-03-12 02:04:35
85) SMSReplier - V1.0 - Broadcast Receiver - Foreground Notification - Persistency Add-on - Part 2
2015-03-12 01:59:08
86) SMSReplier - V1.0 - Broadcast Receiver - Foreground Notification - Persistency Add-on - Part 1
2015-03-11 01:24:43
87) WebService -HTTP GET - AsyncTask - XML Parsing
2015-03-10 01:22:20
88) GoogleMap V2 - LocationListener - GPS
2015-03-09 01:51:33
89) SMS And Call Broadcast Receiver
2015-03-06 01:25:52
90) WebService - HTTP POST - AsyncTask - JSON Parsing
2015-03-05 01:18:38
91) WebService Introduction - GET - AsyncTask - JSON Parsing
2015-03-04 00:39:34
92) AsyncTask Example - Loading Image From Server
2015-03-03 00:15:21
93) SqliteDB Integration - SMSReplier V1.0 - Continued
2015-03-02 01:39:20
94) SMSList - Compose Fragment - FragmentBackStack - SMSReplier V1.0 - Continued...
2015-02-28 00:45:24
95) Post Login - DrawerLayout - Menu System - SMSReplier V1.0 Continued
2015-02-27 01:26:30
96) ViewPager - Tab - PreferenceManager Add On - Moving Everything To Fragment -SMSReplier V1.0 Continued
2015-02-25 02:56:09
97) Camera - Bitmap Add On - SMSReplier V1.0 - Continued
2015-02-25 01:29:05
98) SMSReplier - V1.0 - Registration Form
2015-02-24 03:56:38
99) Introduction To Service And BroadcastReceiver - IntentFilter
2015-02-23 00:57:08
100) Communicating Fragments - Bundle - Interface
2015-02-20 02:01:03
101) Navigation Drawer - Fragment Indroduction
2015-02-18 00:40:37
102) ListView - CustomAdapter With ViewHolder
2015-02-18 00:37:09
103) ListView - SimpleCursorAdapter Example
2015-02-16 04:13:55
104) ListView With SqliteDB - Add -Edit - Delete - Retrive
2015-02-13 23:07:36
105) OptionsMenu And ContextMenu With ListView
2015-02-13 01:40:46
106) ArrayAdapter And SimpleAdapter - ListView Example
2015-02-11 04:22:29
107) Forward And Reverse Bundling Objects Between Activities
2015-02-11 00:16:14
108) Bundle - Parceling Objects Between Activities
2015-02-10 00:34:05
109) ScrollView - PreferenceManager
2015-02-09 03:49:48
110) MultiActivity - AndroidManifest - Intent Introduction
2015-02-09 00:33:52
111) ClickListeners - Object Initialisation - Toast
2015-02-08 23:35:56
112) Bitmap From SD Card
2015-02-07 03:26:37
113) Android Layout Tricks - RelativeLayout
2015-02-06 23:04:29
114) Android Layout Tricks - LinearLayout
2015-02-05 20:47:58
115) UI Stack And Activity LifeCycle
2015-02-04 21:04:55
116) Working With Android Studio
2015-02-04 20:52:49
117) Java - OOP Concept - A Revisit
2014-12-08 22:11:38
118) Maintaining Login State - A Simple Approach
2014-12-07 21:03:53
119) 9 Patch Image Background
2014-12-05 04:25:48
120) WebService - JSON Example From 10.0.2.2 - Localhost
2014-12-03 03:30:10
121) VideoView - Media Controller
2014-12-03 02:52:15
122) Google Map V2 - Location Listener - Display Current Location - Check GPS Status
2014-12-02 23:12:16
123) Google Map V2 Integration
2014-12-02 04:22:51
124) Implicit Intent MIME Type - Camera - Gallery
2014-12-01 23:41:14
125) Camera - Implicit Intent - External Storage Example
2014-12-01 03:01:45
126) WebService - Google Map API WebService Example
2014-11-27 04:22:52
127) Google API Key, KeyStore, Certificate SHA1 Fingerprints
2014-11-27 03:59:46
128) Navigation Drawer - ActionBarDrawerToggle Example
2014-11-26 03:39:20
129) Notification From Service
2014-11-25 03:33:52
130) WebView Example
2014-11-24 00:37:52
131) Saving Item State - Fragment Master Detail Flow Final
2014-11-23 11:43:21
132) Package - Apk Suppress Lint Error
2014-11-21 22:49:09
133) AsyncTask Introduction - Load Image from URL
2014-11-21 05:15:40
134) GridView Example
2014-11-21 03:44:34
135) Location Aware Apps - GPS_PROVIDER - NETWORK_PROVIDER - Introduction
2014-11-20 03:20:22
136) SMSReplier Ver1.3 With Broadcast Receiver
2014-11-19 03:25:18
137) SMSReplier Ver1.2 Using Fragments And SQLite
2014-11-18 05:10:34
138) SMSReplier Ver1.1 Using Fragments - A Modular Approach
2014-11-17 05:21:15
139) ActionBar Tab - Fragment - ViewPager - Lisview - Compose Message
2014-11-15 04:43:26
140) APK - Android Application Package Process
2014-11-15 03:43:55
141) View Fragment And Pager - An Image Gallery Example
2014-11-13 04:07:42
142) Button,Checkbox With Image Background
2014-11-12 04:49:54
143) SMSReplier Ver1.0
2014-11-12 03:10:49
144) BroadcastReceiver With Permission
2014-11-11 03:06:20
145) BroadcastReceiver - Service - Example
2014-11-10 05:21:10
146) Background Service Example
2014-11-10 03:47:35
147) Runtime UI View Generation
2014-11-10 03:30:14
148) Shopping List App Version 3.1 - Shopping Object - Shopping Adapter - Custom Data View Binding
2014-11-10 00:01:53
149) Spinner Example - Dropdown - ArrayAdapter
2014-11-08 01:20:13
150) Shopping List App Version 3.0 - SQlite - CRUD
2014-11-07 03:16:33
151) Shopping List App Version 2.9 - SQlite - SimpleCursorAdapter
2014-11-06 03:08:08
152) Shopping List App Version 2.2 - JSONAdapter (custom) Addon
2014-11-05 04:12:28
153) Customising Adapter From BaseAdapter
2014-11-04 04:46:19
154) Shopping List App Version 2.1 - Alert Dialog Addon
2014-11-04 01:25:04
155) Shopping List App Version 2.1 - View-Edit-Delete Addon
2014-11-03 03:16:51
156) Json Revisit
2014-11-02 23:07:09
157) PreferenceManager Revisit
2014-10-31 03:19:16
158) Shopping List App Version 2.0 - PreferenceManager Add On - Save List
2014-10-30 03:42:19
159) Shopping List App Version 1.0 - Menu-onActivityResult-ListActivity
2014-10-30 02:18:46
160) SharedPreference Example
2014-10-29 22:17:27
161) Option Menu And Context Menu Example
2014-10-29 02:57:14
162) MultiActivity With OnActivityResult Example
2014-10-28 03:09:56
163) Bundle Example
2014-10-27 03:06:53
164) ListView - SimpleAdapter Example
2014-10-27 01:35:15
165) CoreJava Questions & Answers
2014-10-26 22:37:58
166) ListView - ArrayAdapter Example - Continued
2014-10-25 03:32:33
167) ListView - ArrayAdapter Example
2014-10-25 00:18:15
168) Calculator App
2014-10-23 03:14:37
169) Calculator Layout
2014-10-23 00:01:20
170) Event-listeners Example
2014-10-21 03:45:26
171) Android MultiActivity Example
2014-10-20 23:05:09
172) Activity Life Cycle Example
2014-10-20 23:03:17
173) Inheritance Scenario Wrt To Activity
2014-10-20 05:17:13
174) Android HelloWorld From Base
2014-10-20 01:49:59
175) Java Array And ArrayList
2014-10-19 23:06:25
176) Java Basics 1
2014-10-18 05:03:46
177) Hello World Java

© Vasudev.H / Email: tech3in@live.com