dimanche 22 février 2015

Android SQLite outputing rows in new layout

I am relatively new to android and I have an app with a tabbed actionBar where each tab contains a different fragment class. In one tab (enter details) I have a form where the user fills in their details and the data is saved to an SQLite database. What I want to do is have another tab called (view details) so that the user can see the details that they entered. I'm not sure how to go about retrieving the data from the database and outputing it in a new fragment/layout.


MyDBHelper class



package com.astuetz.viewpager.extensions.sample;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.Cursor;
import android.content.Context;
import android.content.ContentValues;

public class MyDBHandler extends SQLiteOpenHelper {

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "detailsDB.db";
public static final String TABLE_DETAILS = "details";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_FIRSTNAME = "firstname";
public static final String COLUMN_SURNAME = "surname";
public static final String COLUMN_PHONE = "phone";
public static final String COLUMN_EMAIL = "email";
public static final String COLUMN_ADDRESS1 = "address1";
public static final String COLUMN_ADDRESS2 = "address2";

// Pass database information along to superclass
public MyDBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
String query = " CREATE TABLE " + TABLE_DETAILS + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COLUMN_FIRSTNAME + " TEXT, "
+ COLUMN_SURNAME + " TEXT, "
+ COLUMN_PHONE + " TEXT, "
+ COLUMN_EMAIL + " TEXT, "
+ COLUMN_ADDRESS1 + " TEXT, "
+ COLUMN_ADDRESS2 + " TEXT "
+ ");";
db.execSQL(query);
}

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

//Add a new row to the database
public void addDetails(Details details){
ContentValues values = new ContentValues();
values.put(COLUMN_FIRSTNAME, details.getFirstname());
values.put(COLUMN_SURNAME, details.getSurname());
values.put(COLUMN_PHONE, details.getPhone());
values.put(COLUMN_EMAIL, details.getEmail());
values.put(COLUMN_ADDRESS1, details.getAddress1());
values.put(COLUMN_ADDRESS2, details.getAddress2());
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_DETAILS, null, values);
db.close();
}

}


Details class



package com.astuetz.viewpager.extensions.sample;

public class Details {
int _id;
String firstname;
String surname;
String phone;
String email;
String address1;
String address2;

// Empty constructor
public Details(String s){
}

public void set_id(int _id) {
this._id = _id;
}

public void setFirstname(String firstname) {
this.firstname = firstname;
}

public void setSurname(String surname) {
this.surname = surname;
}

public void setPhone(String phone) {
this.phone = phone;
}

public void setEmail(String email) {
this.email = email;
}

public void setAddress1(String address1) {
this.address1 = address1;
}

public void setAddress2(String address2) {
this.address2 = address2;
}



public int get_id() {
return _id;
}

public String getFirstname() {
return firstname;
}

public String getSurname() {
return surname;
}

public String getPhone() {
return phone;
}

public String getEmail() {
return email;
}

public String getAddress1() {
return address1;
}

public String getAddress2() {
return address2;
}
}


FragmentTab1 class



package com.astuetz.viewpager.extensions.sample;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.support.v4.app.Fragment;
import android.content.Context;
import android.content.Intent;
//import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.view.View.OnClickListener;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.widget.Toast;


public class FragmentTab1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment1, container, false);

Button addButtonClicked = (Button)rootView.findViewById(R.id.addButtonClicked);
addButtonClicked.setOnClickListener(new OnClickListener(){
public void onClick(View v)
{
addButtonClicked(v);
}
});



//setContentView(R.layout.fragment1);
firstName = (TextView) rootView.findViewById(R.id.firstName);
editTextName = (EditText) rootView.findViewById(R.id.editTextName);
textView5 = (TextView) rootView.findViewById(R.id.surName);
editTextSurname = (EditText) rootView.findViewById(R.id.editTextSurname);
textView4 = (TextView) rootView.findViewById(R.id.mobile);
editTextMobile = (EditText) rootView.findViewById(R.id.editTextMobile);
textView2 = (TextView) rootView.findViewById(R.id.Email);
editTextEmail = (EditText) rootView.findViewById(R.id.editTextEmail);
textView3 = (TextView) rootView.findViewById(R.id.address1);
editTextAddress1 = (EditText) rootView.findViewById(R.id.editTextAddress1);
textView6 = (TextView) rootView.findViewById(R.id.address2);
editTextAddress2 = (EditText) rootView.findViewById(R.id.editTextAddress2);

dbHandler = new MyDBHandler(getActivity(), null, null, 1);

return rootView;
}



TextView firstName;
EditText editTextName;

TextView textView5;
EditText editTextSurname;

TextView textView4;
EditText editTextMobile;

TextView textView2;
EditText editTextEmail;

TextView textView3;
EditText editTextAddress1;

TextView textView6;
EditText editTextAddress2;

MyDBHandler dbHandler;

private boolean isValidEmail(String email) {
String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

Pattern pattern = Pattern.compile(EMAIL_PATTERN);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}



//Add details to the database
public void addButtonClicked(View view) {
final String email = editTextEmail.getText().toString();
if (!isValidEmail(email))
{
editTextEmail.setError("Invalid Email");
Toast.makeText(getActivity().getApplicationContext(), "Invalid email format",
Toast.LENGTH_LONG).show();

}
if( editTextName.getText().toString().length() == 0 )
{
editTextName.setError("First name is required!");
Toast.makeText(getActivity().getApplicationContext(), "First name is required",
Toast.LENGTH_LONG).show();
}
if( editTextSurname.getText().toString().length() == 0 )
{
editTextSurname.setError("Surname is required!");
Toast.makeText(getActivity().getApplicationContext(), "Surname is required",
Toast.LENGTH_LONG).show();
}
if( editTextMobile.getText().toString().length() == 0 )
{
editTextMobile.setError("Mobile number is required!");
Toast.makeText(getActivity().getApplicationContext(), "Mobile number is required",
Toast.LENGTH_LONG).show();
}
if( editTextAddress1.getText().toString().length() == 0 )
{
editTextAddress1.setError("Address Line 1 is required!");
Toast.makeText(getActivity().getApplicationContext(), "Address Line 1 is required",
Toast.LENGTH_LONG).show();
}
if( editTextAddress2.getText().toString().length() == 0 )
{
editTextAddress2.setError("Address Line 2 is required!");
Toast.makeText(getActivity().getApplicationContext(), "Address Line 2 is required",
Toast.LENGTH_LONG).show();
}
else
{
Details details = new Details("");
details.setFirstname(editTextName.getText().toString());
details.setSurname(editTextSurname.getText().toString());
details.setPhone(editTextMobile.getText().toString());
details.setEmail(editTextEmail.getText().toString());
details.setAddress1(editTextAddress1.getText().toString());
details.setAddress2(editTextAddress2.getText().toString());
dbHandler.addDetails(details);
Toast.makeText(getActivity().getApplicationContext(), "Details saved successfully",
Toast.LENGTH_LONG).show();
}
}

}

Aucun commentaire:

Enregistrer un commentaire