Thursday, 12 February 2015

SQLiteDatabase Part4: Update an Delete data in Table Example

Part4: update and delete the data in table

 Update Screenshots:












Delete Screenshots:










Step 1: Add the following update and delete methods in DBAdapter.java to manipulate the database

DBAdapter.java

public Cursor getValuesById(int id){
       return database.rawQuery("select * from sample_table where _id = "+id, null);
}

public int updateValues(int id, String name, String contact) {
       ContentValues values2 = new ContentValues();
       values2.put("name", name);
       values2.put("phone", contact);

       return database.update(DBOpenHelper.SAMPLE_TABLE_NAME, values2,
                     "_id=?", new String[] { "" + id });
}
public int deleteById(int id){
       return database.delete(DBOpenHelper.SAMPLE_TABLE_NAME, "_id=?", new String[]{""+id});
}

Step 2: Create context menu xml file to display option when long click on the list item

res/menu/listview_context_menu.xml

listview_context_menu.xml

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

    <item
        android:id="@+id/context_item_edit"
        android:title="Edit"/>
    <item
        android:id="@+id/context_item_delete"
        android:title="Delete"/>

</menu>

ViewAllDetails.java

Step 3: Register context menu for listView, write the following code in onCreate()

registerForContextMenu(listView);

Step 4: Add the following code in onCreate()

listView.setOnItemLongClickListener(new OnItemLongClickListener() {

       @Override
       public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                     int arg2, long arg3) {
              String id = ((TextView) arg1
                           .findViewById(R.id.custom_textView_id)).getText()
                           .toString();
              selected_item_id = Integer.parseInt(id);
              return false;
       }

});

Step 5: Add two methods onCreateContextMenu and onContextItemSelected in ViewAllDetails.java

@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
       getMenuInflater().inflate(R.menu.listview_context_menu, menu);
       super.onCreateContextMenu(menu, v, menuInfo);
}
      
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.context_item_edit:
       dialog = new Dialog(ViewAllActivity.this);
       dialog.setTitle("Edit Details");
       dialog.setContentView(R.layout.custom_dialog);
       dialog.show();

       Cursor cursor = dbAdapter.getValuesById(selected_item_id);
       cursor.moveToFirst();

       editText_name = (EditText) dialog
                     .findViewById(R.id.custom_dialog_editText_name);
       editText_phone = (EditText) dialog
                     .findViewById(R.id.custom_dialog_editText_phone);
       Button button_save = (Button) dialog
                     .findViewById(R.id.custom_dialog_button_save);
       Button button_cancel = (Button) dialog
                     .findViewById(R.id.custom_dialog_button_cancel);

       editText_name.setText(cursor.getString(1));
       editText_phone.setText(cursor.getString(2));

       button_save.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
              String name = editText_name.getText().toString();
              String phone = editText_phone.getText().toString();
              int response = dbAdapter.updateValues(selected_item_id,
                           name, phone);

              if (response == -1) {
                     Toast.makeText(getApplicationContext(),  "Data Failed Update", Toast.LENGTH_LONG).show();
              } else {
                     refreshListView();
                     Toast.makeText(getApplicationContext(),  "Data Updated successfully", Toast.LENGTH_LONG)
                                  .show();
              }
              dialog.dismiss();
              }
       });

       button_cancel.setOnClickListener(new OnClickListener() {

              @Override
              public void onClick(View v) {
                     dialog.dismiss();
              }
       });

       break;

case R.id.context_item_delete:
       int response = dbAdapter.deleteById(selected_item_id);
       if (response == -1) {
       Toast.makeText(getApplicationContext(),  "Data failed to delete successfully", Toast.LENGTH_LONG).show();
       } else {
       Toast.makeText(getApplicationContext(),  "Data deleted successfully", Toast.LENGTH_LONG).show();
       refreshListView();
       }
       break;
}
       return super.onContextItemSelected(item);
}

Step 6: Add refreshListView() to refresh the listView content after Update and Delete Items

private void refreshListView() {
              cursor = dbAdapter.getAllValues();
              cursor.moveToFirst();
              MyAdapter adapter = new MyAdapter();
              listView.setAdapter(adapter);
       }



Incoming call Broadcast Receiver




IncomingCallBroadcast.java

package com.swamys.incomingcallbroadcast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.Toast;

public class IncomingCallBroadcast extends BroadcastReceiver {

       @Override
       public void onReceive(Context context, Intent intent) {

              Bundle bundle = intent.getExtras();
              String status = bundle.getString(TelephonyManager.EXTRA_STATE);

              if (status.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
                     String Phone_number = bundle
                                  .getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
                     Toast.makeText(context, "Incoming call: " + Phone_number,
                                  Toast.LENGTH_LONG).show();
              }

       }

}


Manifest.xml

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

    <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="18" />

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.swamys.incomingcallbroadcast.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>

        <receiver android:name="com.swamys.incomingcallbroadcast.IncomingCallBroadcast" >
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" />
            </intent-filter>
        </receiver>
    </application>


</manifest>

Battery BroadcastReceiver Example



ScreenShots:


BatteryBroadCast.java

package com.swamys.batterybroadcast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class BatteryBroadcast extends BroadcastReceiver {

       @Override
       public void onReceive(Context context, Intent intent) {
              int battery_status = intent.getIntExtra("level", 0);
              Toast.makeText(context, "" + battery_status, Toast.LENGTH_LONG).show();
       }
}


MainActivity.java

package com.swamys.batterybroadcast;

import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;

public class MainActivity extends Activity {

       @Override
       protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              registerReceiver(new BatteryBroadcast(), new IntentFilter(
                           Intent.ACTION_BATTERY_CHANGED));
       }
}

Custom BroadcastReceiver Example

Broadcest Receiver Example in android


ScreenShots:



activity_main.xml
<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"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="51dp"
        android:text="Custom Broacast" />

</RelativeLayout>

CustomBroadcast.java
package com.swamys.custombroadcast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class CustomBroadcast extends BroadcastReceiver {

       @Override
       public void onReceive(Context context, Intent intent) {
              Toast.makeText(context, "Custom Broadcast called", Toast.LENGTH_LONG)
                           .show();
       }

}

MainActivity.java
package com.swamys.custombroadcast;

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

public class MainActivity extends Activity {

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

              Button button = (Button) findViewById(R.id.button1);
              button.setOnClickListener(new OnClickListener() {

                     @Override
                     public void onClick(View v) {
                           // TODO Auto-generated method stub
                           Intent intent = new Intent();
                           intent.setAction("com.swamy.CUSTOM_BROADCAST");
                           sendBroadcast(intent);
                     }
              });

       }

}

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

    <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.swamys.custombroadcast.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>
        <receiver android:name="com.swamys.custombroadcast.CustomBroadcast">
            <intent-filter>
                <action android:name="com.swamy.CUSTOM_BROADCAST" />
            </intent-filter>
        </receiver>
    </application>

</manifest>