The code for my android application is below and so far I'm happy with it. Before anyone comments, I do acknowledge it requires the addition of further validation. The android application is a login system which makes use of SQLite to store login information such as usernames and passwords for use login purposes.


How can I go about, modifying this project to make use of MVC, so data added to the SQLite database will instead fill the model and then this model can fill the view?

Just to be clear, could someone suggest how programmatically I can accomplish the above. That way I can better understand what needs to be done.

Code:

HomeActivity.java

Code:
    package com.myLoginSystem.example;
    
    import android.app.Activity;
    import android.app.Dialog;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class HomeActivity extends Activity 
    {
    	Button btnSignIn,btnSignUp;
    	LoginDataBaseAdapter loginDataBaseAdapter;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) 
    	{
    	     super.onCreate(savedInstanceState);
    	     setContentView(R.layout.main);
    
    	     // create a instance of SQLite Database
    	     loginDataBaseAdapter=new LoginDataBaseAdapter(this);
    	     loginDataBaseAdapter=loginDataBaseAdapter.open();
    
    	     // Get The Refference Of Buttons
    	     btnSignIn=(Button)findViewById(R.id.buttonSignIN);
    	     btnSignUp=(Button)findViewById(R.id.buttonSignUP);
    
    	    // Set OnClick Listener on SignUp button 
    	    btnSignUp.setOnClickListener(new View.OnClickListener() {
    		public void onClick(View v) {
    			// TODO Auto-generated method stub
    
    			/// Create Intent for SignUpActivity  abd Start The Activity
    			Intent intentSignUP=new Intent(getApplicationContext(),SignUPActivity.class);
    			startActivity(intentSignUP);
    			}
    		});
    	}
    	// Methos to handleClick Event of Sign In Button
    	public void signIn(View V)
    	   {
    			final Dialog dialog = new Dialog(HomeActivity.this);
    			dialog.setContentView(R.layout.login);
    		    dialog.setTitle("Login");
    
    		    // get the Refferences of views
    		    final  EditText editTextUserName=(EditText)dialog.findViewById(R.id.editTextUserNameToLogin);
    		    final  EditText editTextPassword=(EditText)dialog.findViewById(R.id.editTextPasswordToLogin);
    
    			Button btnSignIn=(Button)dialog.findViewById(R.id.buttonSignIn);
    
    			// Set On ClickListener
    			btnSignIn.setOnClickListener(new View.OnClickListener() {
    
    				public void onClick(View v) {
    					// get The User name and Password
    					String userName=editTextUserName.getText().toString();
    					String password=editTextPassword.getText().toString();
    
    					// fetch the Password form database for respective user name
    					String storedPassword=loginDataBaseAdapter.getSinlgeEntry(userName);
    
    					// check if the Stored password matches with  Password entered by user
    					if(password.equals(storedPassword))
    					{
    						Toast.makeText(HomeActivity.this, "Congrats: Login Successfull", Toast.LENGTH_LONG).show();
    						dialog.dismiss();
    					}
    					else
    					{
    						Toast.makeText(HomeActivity.this, "User Name or Password does not match", Toast.LENGTH_LONG).show();
    					}
    				}
    			});
    
    			dialog.show();
    	}
    
    	@Override
    	protected void onDestroy() {
    		super.onDestroy();
    	    // Close The Database
    		loginDataBaseAdapter.close();
    	}
    }
SignUPActivity.Java

Code:
    package com.myLoginSystem.example;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class SignUPActivity extends Activity
    {
    	EditText editTextUserName,editTextPassword,editTextConfirmPassword;
    	Button btnCreateAccount;
    
    	LoginDataBaseAdapter loginDataBaseAdapter;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) 
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.signup);
    
    		// get Instance  of Database Adapter
    		loginDataBaseAdapter=new LoginDataBaseAdapter(this);
    		loginDataBaseAdapter=loginDataBaseAdapter.open();
    
    		// Get Refferences of Views
    		editTextUserName=(EditText)findViewById(R.id.editTextUserName);
    		editTextPassword=(EditText)findViewById(R.id.editTextPassword);
    		editTextConfirmPassword=(EditText)findViewById(R.id.editTextConfirmPassword);
    
    		btnCreateAccount=(Button)findViewById(R.id.buttonCreateAccount);
    		btnCreateAccount.setOnClickListener(new View.OnClickListener() {
    
    		public void onClick(View v) {
    			// TODO Auto-generated method stub
    
    			String userName=editTextUserName.getText().toString();
    			String password=editTextPassword.getText().toString();
    			String confirmPassword=editTextConfirmPassword.getText().toString();
    
    			// check if any of the fields are vaccant
    			if(userName.equals("")||password.equals("")||confirmPassword.equals(""))
    			{
    					Toast.makeText(getApplicationContext(), "Field Vaccant", Toast.LENGTH_LONG).show();
    					return;
    			}
    			// check if both password matches
    			if(!password.equals(confirmPassword))
    			{
    				Toast.makeText(getApplicationContext(), "Password does not match", Toast.LENGTH_LONG).show();
    				return;
    			}
    			else
    			{
    			    // Save the Data in Database
    			    loginDataBaseAdapter.insertEntry(userName, password);
    			    Toast.makeText(getApplicationContext(), "Account Successfully Created ", Toast.LENGTH_LONG).show();
    			}
    		}
    	});
    }
    	@Override
    	protected void onDestroy() {
    		// TODO Auto-generated method stub
    		super.onDestroy();
    
    		loginDataBaseAdapter.close();
    	}
    }
DataBaseHelper.Java

Code:
    package com.myLoginSystem.example;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;
    
    public class DataBaseHelper extends SQLiteOpenHelper
    {
    	public DataBaseHelper(Context context, String name,CursorFactory factory, int version) 
        {
    	           super(context, name, factory, version);
    	}
    	// Called when no database exists in disk and the helper class needs
    	// to create a new one.
    	@Override
    	public void onCreate(SQLiteDatabase _db) 
    	{
    			_db.execSQL(LoginDataBaseAdapter.DATABASE_CREATE);
    
    	}
    	// Called when there is a database version mismatch meaning that the version
    	// of the database on disk needs to be upgraded to the current version.
    	@Override
    	public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion) 
    	{
    			// Log the version upgrade.
    			Log.w("TaskDBAdapter", "Upgrading from version " +_oldVersion + " to " +_newVersion + ", which will destroy all old data");
    
    			// Upgrade the existing database to conform to the new version. Multiple
    			// previous versions can be handled by comparing _oldVersion and _newVersion
    			// values.
    			// The simplest case is to drop the old table and create a new one.
    			_db.execSQL("DROP TABLE IF EXISTS " + "TEMPLATE");
    			// Create a new one.
    			onCreate(_db);
    	}
    
    }
LoginDataBaseAdapter.Java

Code:
    package com.myLoginSystem.example;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;
    
    public class LoginDataBaseAdapter 
    {
    		static final String DATABASE_NAME = "login.db";
    		static final int DATABASE_VERSION = 1;
    		public static final int NAME_COLUMN = 1;
    		// TODO: Create public field for each column in your table.
    		// SQL Statement to create a new database.
    		static final String DATABASE_CREATE = "create table "+"LOGIN"+
    		                             "( " +"ID"+" integer primary key autoincrement,"+ "USERNAME  text,PASSWORD text); ";
    		// Variable to hold the database instance
    		public  SQLiteDatabase db;
    		// Context of the application using the database.
    		private final Context context;
    		// Database open/upgrade helper
    		private DataBaseHelper dbHelper;
    		public  LoginDataBaseAdapter(Context _context) 
    		{
    			context = _context;
    			dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
    		}
    		public  LoginDataBaseAdapter open() throws SQLException 
    		{
    			db = dbHelper.getWritableDatabase();
    			return this;
    		}
    		public void close() 
    		{
    			db.close();
    		}
    
    		public  SQLiteDatabase getDatabaseInstance()
    		{
    			return db;
    		}
    
    		public void insertEntry(String userName,String password)
    		{
    	       ContentValues newValues = new ContentValues();
    			// Assign values for each row.
    			newValues.put("USERNAME", userName);
    			newValues.put("PASSWORD",password);
    
    			// Insert the row into your table
    			db.insert("LOGIN", null, newValues);
    			///Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show();
    		}
    		public int deleteEntry(String UserName)
    		{
    			//String id=String.valueOf(ID);
    		    String where="USERNAME=?";
    		    int numberOFEntriesDeleted= db.delete("LOGIN", where, new String[]{UserName}) ;
    	       // Toast.makeText(context, "Number fo Entry Deleted Successfully : "+numberOFEntriesDeleted, Toast.LENGTH_LONG).show();
    	        return numberOFEntriesDeleted;
    		}	
    		public String getSinlgeEntry(String userName)
    		{
    			Cursor cursor=db.query("LOGIN", null, " USERNAME=?", new String[]{userName}, null, null, null);
    	        if(cursor.getCount()<1) // UserName Not Exist
    	        {
    	        	cursor.close();
    	        	return "NOT EXIST";
    	        }
    		    cursor.moveToFirst();
    			String password= cursor.getString(cursor.getColumnIndex("PASSWORD"));
    			cursor.close();
    			return password;				
    		}
    		public void  updateEntry(String userName,String password)
    		{
    			// Define the updated row content.
    			ContentValues updatedValues = new ContentValues();
    			// Assign values for each row.
    			updatedValues.put("USERNAME", userName);
    			updatedValues.put("PASSWORD",password);
    
    	        String where="USERNAME = ?";
    		    db.update("LOGIN",updatedValues, where, new String[]{userName});			   
    		}		
    }
Applications Manifest

Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.myLoginSystem.example"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="16" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.myLoginSystem.example.HomeActivity"
                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=".SignUPActivity"/>
        </application>
    
    </manifest>