Skip to main content

View Complete Record from ListView - Android database SQLite (p5)

This tutorial is a continuation of tutorial on Populate Records in ListView

This exercise will invoke another screen to display complete information of the selected staff from the ListView.

screen offline db display all data

Code is here - http://khirulnizam.com/android/FSTMDirektori.zip

STEP 1: Add a new screen (to display complete info of staff).

Right-click the project, New –> Other…

right click package and create new class

new screen select Android ctivity

new blank activity

Type ViewRecord for the Activity name, and hit Finish.

new activity view-record

 

STEP 2: Design the layout of ViewRecord screen.

screen offline db display all data

The XML layout (open the one in layout forlder)

layout design for ViewRecord

The XML code

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#B58897"
tools:context=".ViewRecord" >

<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >

<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<TextView
android:id="@+id/textView1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Fullname"
android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
android:id="@+id/txtnama"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10" >

<requestFocus />
</EditText>
</TableRow>

<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<TextView
android:id="@+id/textView2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Department"
android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
android:id="@+id/txtjbt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10" />
</TableRow>

<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<TextView
android:id="@+id/textView3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Phone"
android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
android:id="@+id/txttelefon"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:inputType="phone" />
</TableRow>

<TableRow
android:id="@+id/tableRow4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<TextView
android:id="@+id/textView4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Email"
android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
android:id="@+id/txtemel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:inputType="textEmailAddress" />
</TableRow>

<TableRow
android:id="@+id/tableRow5"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >

<ImageButton
android:id="@+id/btncall"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_call_black_24dp" />

<ImageButton
android:id="@+id/btnemail"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_email_black_24dp" />
</TableRow>

</TableLayout>

</RelativeLayout>


 


STEP 3: Add the setOnItemClickListener on the ListView. This need to be added in the DisplayList.java


add setOnItemClickListener


DisplayList.java


package net.kerul.fstmdirektori;

import java.util.ArrayList;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.Toast;

public class DisplayList extends Activity {

private DBHelper mHelper;
private SQLiteDatabase dataBase;

//variables to hold staff records
private ArrayList<String> stafid = new ArrayList<String>();
private ArrayList<String> nama = new ArrayList<String>();
private ArrayList<String> jbt = new ArrayList<String>();

private ListView userList;
private AlertDialog.Builder build;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_list);

userList = (ListView) findViewById(R.id.List);

mHelper = new DBHelper(this);

//click to update data
userList.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {

Intent i = new Intent(getApplicationContext(),
ViewRecord.class);
i.putExtra("stafid", stafid.get(arg2));
startActivity(i);

}
});


}

@Override
protected void onResume() {
//refresh data for screen is invoked/displayed
displayData();
super.onResume();
}

/**
* displays data from SQLite
*/
private void displayData() {
dataBase = mHelper.getWritableDatabase();
//the SQL command to fetched all records from the table
Cursor mCursor = dataBase.rawQuery("SELECT * FROM "
+ DBHelper.TABLE_NAME, null);

//reset variables
stafid.clear();
nama.clear();
jbt.clear();

//fetch each record
if (mCursor.moveToFirst()) {
do {
//get data from field
stafid.add(mCursor.getString(mCursor.getColumnIndex(DBHelper.STAFID)));
nama.add(mCursor.getString(mCursor.getColumnIndex(DBHelper.NAMA)));
jbt.add(mCursor.getString(mCursor.getColumnIndex(DBHelper.JBT)));

} while (mCursor.moveToNext());
//do above till data exhausted
}

//display to screen
DisplayAdapter disadpt = new DisplayAdapter(DisplayList.this, stafid, nama, jbt);
userList.setAdapter(disadpt);
mCursor.close();
}//end displayData




@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.display_list, menu);
return true;
}

}


 


STEP 4: The code for the second screen (View Record)


code for ViewRecord make callcode for ViewRecord send emailcode for ViewRecord display data from database table


ViewRecord.java


package net.kerul.fstmdirektori;

import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;

public class ViewRecord extends Activity {
private EditText txtnama, txtjbt, txttelefon, txtemel;
private ImageButton btncall, btnemail;
private DBHelper mHelper;
private SQLiteDatabase dataBase;
String id, telno,email,name;//to hold the data strings

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_record);

//capture sent parameter from previous screen
id=getIntent().getExtras().getString("stafid");

//initiate all textbox container to hold the data for the staff
txtnama=(EditText)findViewById(R.id.txtnama);
txtjbt=(EditText)findViewById(R.id.txtjbt);
txttelefon=(EditText)findViewById(R.id.txttelefon);
txtemel=(EditText)findViewById(R.id.txtemel);

//handling the call
//be sure to add <uses-permission android:name="android.permission.CALL_PHONE" /> in manifest
btncall=(ImageButton)findViewById(R.id.btncall);
btncall.setOnClickListener( new OnClickListener(){
public void onClick(View v){
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+telno ));//provide the phone number
startActivity(intent);//call
}
});//end btncall setOnCLickCListener

//handling the email button
btnemail=(ImageButton)findViewById(R.id.btnemail);
btnemail.setOnClickListener( new OnClickListener(){
public void onClick(View v){
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto",email, null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "A query about FSTM");//title
emailIntent.putExtra(Intent.EXTRA_TEXT, "Salaam, "+name);//message body
startActivity(Intent.createChooser(emailIntent, "Send email..."));//invoke email client chooser
}
});//end btnemail setOnCLickCListener
}

@Override
protected void onResume() {
//refresh data for screen is invoked/displayed
displayData();
super.onResume();
}

//display single record of data from stafid
private void displayData() {
mHelper=new DBHelper(this);
dataBase = mHelper.getWritableDatabase();
//the SQL command to fetched all records from the table
String sql="SELECT * FROM "
+ DBHelper.TABLE_NAME +" WHERE stafid='"+id+"';";
Cursor mCursor = dataBase.rawQuery(sql, null);

//fetch the record
if (mCursor.moveToFirst()) {
//fetch each field and transfer to textbox
telno=mCursor.getString(mCursor.getColumnIndex(DBHelper.TELEFON));
email=mCursor.getString(mCursor.getColumnIndex(DBHelper.EMEL));
name=mCursor.getString(mCursor.getColumnIndex(DBHelper.NAMA));
//get data from field and transfer to EditText
txtnama.setText(name);
txtjbt.setText(mCursor.getString(mCursor.getColumnIndex(DBHelper.JBT)));
txttelefon.setText(telno);
txtemel.setText(email);

}
else{
//do something here if no record fetched from database
txtnama.setText(sql);
}
}//end displayData

}


Add additional uses-permission in AndroidManifest.xml to allow call from your app.


uses-permission call AndroidManifest


<uses-permission android:name="android.permission.CALL_PHONE" />


Now you may compile and run the app…


Code is here - http://khirulnizam.com/android/FSTMDirektori.zip

Comments

Popular posts from this blog

Several English proverbs and the Malay pair

Or you could download here for the Malay proverbs app – https://play.google.com/store/apps/details?id=net.kerul.peribahasa English proverbs and the Malay pair Corpus Reference: Amir Muslim, 2009. Peribahasa dan ungkapan Inggeris-Melayu. DBP, Kuala Lumpur http://books.google.com.my/books/about/Peribahasa_dan_ungkapan_Inggeris_Melayu.html?id=bgwwQwAACAAJ CTRL+F to search Proverbs in English Definition in English Similar Malay Proverbs Definition in Malay 1 Where there is a country, there are people. A country must have people. Ada air adalah ikan. Ada negeri adalah rakyatnya. 2 Dry bread at home is better than roast meat home's the best hujan emas di negeri orang,hujan batu di negeri sendiri Betapa baik pun tempat orang, baik lagi tempat sendiri. 3 There's no accounting for tastes We can't assume that every people have a same feel Kepala sama hitam hati lain-lain. Dalam kehidupan ini, setiap insan berbeza cara, kesukaan, perangai, tabia...

Pemasangan Joomla! 1.7 pada pelayan web komputer anda

Latihan ini akan memasang sistem pengurusan kandungan laman web ke dalam pelayan web yang anda telah pasang sebelum ini . LANGKAH 1: Aktifkan Pelayan Web dan Pangkalan Data Aktifkan XAMPP Control Panel, melalui “ Start->All Programs->ApacheFriends->XAMPP Control Panel ”. Rajah 2.1 Pastikan pelayan web Apache dan pelayan pangkalan data MySQL diaktifkan dengan klik butang START. -> Rajah 2.2

searchdelete.php (list records of table to delete)

< form name = 'search' method = 'get' action = '' > Insert the firstname < input type = 'text' name = 'txtname' > < input type = 'submit' value = 'search name' > </ form > < ?php //database connect $db = mysqli_connect ( "localhost" , "root" , "" , "mycompanyhr" ); //checking database connection if ( $db == false ) { echo "Connect failed: " . mysqli_connect_error ( $db ); exit (); } else { echo "Connection successful" ; } $n = $_GET [ 'txtname' ]; $sql = "select EMPNO, FIRSTNAME, LASTNAME, WORKDEPT, PHONENO from employee where FIRSTNAME like '%$n%' " ; $rs = mysqli_query ( $db , $sql ); if ( $rs == false ){ echo ( "Query cannot be executed!<br>" ); echo ( "SQL Error : " . mysqli_error ( $db )); } else { echo "<table border=1>...

ViewFlipper Example–a simple FlashCard

UPDATE: Improved with Fling gesture (Sept 2012) UPDATE: ViewFlipper with Flip-In and Flip-Out Animation (August 2012) This tutorial is to demonstrate the ViewFlipper layout that is almost similar to CardLayout (in Java). The app will produce a simple Flash card that provide several screens with different picture for each card. Flip-in and Flip-out animation provided. Added in Sept 2012 – an improvement to support Fling gesture – enjoy… The amendment is only on the coding part. Some how the layout design (main.xml) is quite long. Later I’ll produce separated screen by including several XML layout from outside files. Screenshots;

Installing Google AdMob into Android Apps

Previously I wrote on why ads are needed to help maintaining an app. Read the article here http://blog.kerul.net/2011/05/generating-revenue-from-free-mobile.html . ---This is quite an old article. You may find the latest supporting AdMob 6.x in here http://blog.kerul.net/2012/08/example-how-to-install-google-admob-6x.html --- This is quite a long tutorial, there are 3 major steps involved. The experiment is done using Windows 7, Eclipse Helios and AdMob SDK 4.1.0 (which currently is the latest-during time of writing). STEP 1: Get the ads from AdMob.com To display the AdMob ads in your Android mobile apps, you need to register first at the admob.com . After completing the registration, login and Add Site/App. Refer to Figure 1. Figure 1 Choose the desired platform and fill in the details (as in Figure 2). Just put http:// in the Android Package URL if your app is not published in the market yet. And click Continue. Figure 2 Download the AdMob Android SDK, and save the zip fil...