In this post I will describe how to connect ListView with database.
ListView can be populated by ArrayAdapter, Custom Adapter, ArrayList etc
Have a look at my previous post
Populating ListView with Custom Adapter
Populating ListView with ArrayList
In this example I have created a listView and populated it with DataBAse.
Each of the ListView item contain two views
TextView SMS Sender : to show SMS Sender Number
TextView SMSBody : to show the SMS Body/content
Here the ListView shows the all the SMSes with Sender Number and SMSBody.
Add the following permission in your manifest file to read the SMS..
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#D1FFFF"
android:orientation="vertical">
<ListView
android:id="@+id/listViewSMS"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:dividerHeight="0.1dp"
android:divider="#0000CC"
>
</ListView>
</LinearLayout>
<?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" >
<TextView
android:id="@+id/textViewSMSSender"
android:paddingLeft="2dp"
android:textSize="20dp"
android:textStyle="bold"
android:textColor="#0000FF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/textViewMessageBody"
android:paddingLeft="5dp"
android:textColor="#5C002E"
android:textSize="17dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
</LinearLayout>
public class ListViewWithDatabaseActivity extends Activity
{
ListView listViewPhoneBook;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_activity_main);
context=this;
//get the ListView Reference
listViewSMS=(ListView)findViewById(R.id.listViewSMS);
//arrayColumns is the column name in your cursor where you're getting the data
// here we are displaying SMSsender Number i.e. address and SMSBody i.e. body
String[] arrayColumns = new String[]{"address","body"};
//arrayViewID contains the id of textViews
// you can add more Views as per Requirement
// textViewSMSSender is connected to "address" of arrayColumns
// textViewMessageBody is connected to "body"of arrayColumns
int[] arrayViewIDs = new int[]{R.id.textViewSMSSender,R.id.textViewMessageBody};
Cursor cursor;
cursor = getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null);
// create an Adapter with arguments layoutID, Cursor, Array Of Columns, and Array of ViewIds which is to be Populated
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.listview_each_item, cursor, arrayColumns, arrayViewIDs);
listViewSMS.setAdapter(adapter);
// To handle the click on List View Item
listViewSMS.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0, View v,int position, long arg3)
{
// when user clicks on ListView Item , onItemClick is called
// with position and View of the item which is clicked
// we can use the position parameter to get index of clicked item
TextView textViewSMSSender=(TextView)v.findViewById(R.id.textViewSMSSender);
TextView textViewSMSBody=(TextView)v.findViewById(R.id.textViewMessageBody);
String smsSender=textViewSMSSender.getText().toString();
String smsBody=textViewSMSBody.getText().toString();
// Show The Dialog with Selected SMS
AlertDialog dialog = new AlertDialog.Builder(context).create();
dialog.setTitle("SMS From : "+smsSender);
dialog.setIcon(android.R.drawable.ic_dialog_info);
dialog.setMessage(smsBody);
dialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
return;
}
});
dialog.show();
}
});
}
}
ListView can be populated by ArrayAdapter, Custom Adapter, ArrayList etc
Have a look at my previous post
Populating ListView with Custom Adapter
Populating ListView with ArrayList
ListView with DataBase Example
In this example I have created a listView and populated it with DataBAse.
Each of the ListView item contain two views
TextView SMS Sender : to show SMS Sender Number
TextView SMSBody : to show the SMS Body/content
Here the ListView shows the all the SMSes with Sender Number and SMSBody.
Add the following permission in your manifest file to read the SMS..
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
listview_activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#D1FFFF"
android:orientation="vertical">
<ListView
android:id="@+id/listViewSMS"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:dividerHeight="0.1dp"
android:divider="#0000CC"
>
</ListView>
</LinearLayout>
listview_each_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="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textViewSMSSender"
android:paddingLeft="2dp"
android:textSize="20dp"
android:textStyle="bold"
android:textColor="#0000FF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/textViewMessageBody"
android:paddingLeft="5dp"
android:textColor="#5C002E"
android:textSize="17dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
</LinearLayout>
ListViewWithDatabaseActivity
public class ListViewWithDatabaseActivity extends Activity
{
ListView listViewPhoneBook;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_activity_main);
context=this;
//get the ListView Reference
listViewSMS=(ListView)findViewById(R.id.listViewSMS);
//arrayColumns is the column name in your cursor where you're getting the data
// here we are displaying SMSsender Number i.e. address and SMSBody i.e. body
String[] arrayColumns = new String[]{"address","body"};
//arrayViewID contains the id of textViews
// you can add more Views as per Requirement
// textViewSMSSender is connected to "address" of arrayColumns
// textViewMessageBody is connected to "body"of arrayColumns
int[] arrayViewIDs = new int[]{R.id.textViewSMSSender,R.id.textViewMessageBody};
Cursor cursor;
cursor = getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null);
// create an Adapter with arguments layoutID, Cursor, Array Of Columns, and Array of ViewIds which is to be Populated
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.listview_each_item, cursor, arrayColumns, arrayViewIDs);
listViewSMS.setAdapter(adapter);
// To handle the click on List View Item
listViewSMS.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0, View v,int position, long arg3)
{
// when user clicks on ListView Item , onItemClick is called
// with position and View of the item which is clicked
// we can use the position parameter to get index of clicked item
TextView textViewSMSSender=(TextView)v.findViewById(R.id.textViewSMSSender);
TextView textViewSMSBody=(TextView)v.findViewById(R.id.textViewMessageBody);
String smsSender=textViewSMSSender.getText().toString();
String smsBody=textViewSMSBody.getText().toString();
// Show The Dialog with Selected SMS
AlertDialog dialog = new AlertDialog.Builder(context).create();
dialog.setTitle("SMS From : "+smsSender);
dialog.setIcon(android.R.drawable.ic_dialog_info);
dialog.setMessage(smsBody);
dialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
return;
}
});
dialog.show();
}
});
}
}
Aivivu - đại lý chuyên vé máy bay trong nước và quốc tế
ReplyDeleteVé máy bay đi Mỹ
khi nào có chuyến bay từ mỹ về việt nam
vé máy bay từ canada về việt nam giá rẻ
đã có chuyến bay từ nhật về việt nam chưa
giá vé máy bay từ hàn quốc về việt nam
Vé máy bay từ Đài Loan về Việt Nam
khách sạn cách ly ở cam ranh
vé máy bay chuyên gia nước ngoài sang Việt Nam
Hi,
ReplyDeleteThanks for sharing the information with us it was very informative. Hangup.in