Thursday, 17 January 2013

Sorting List of Data in Android using Comparator


Project Structure for Sorting List of Data :





sort_list.xml


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

    <Button
        android:id="@+id/desc_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="48dp"
        android:layout_toRightOf="@+id/asc_button"
        android:text="DESC" />

    <ListView
        android:id="@+id/name_list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/desc_button" >
    </ListView>

    <Button
        android:id="@+id/asc_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/name_list"
        android:layout_marginLeft="54dp"
        android:text="ASC" />

</RelativeLayout>


sort_list_item.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/name_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

MainActivity.java

package com.example.sorting_listview_data_asc_desc_example;

public class MainActivity extends Activity implements OnClickListener {

    private Button mAscButton;
    private Button mDescButton;
    private ListView mNameListView;
   
    private List<String> stringList;
    private StringAdapter stringAdapter;
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sort_list);
       
        mAscButton = (Button) findViewById(R.id.asc_button);
        mDescButton = (Button) findViewById(R.id.desc_button);
        mNameListView = (ListView) findViewById(R.id.name_list);
       
        stringList = new ArrayList<String>();
        stringList.add("Rajesh");
        stringList.add("Ramanan");
        stringList.add("Kannan");
        stringList.add("Mahesh");
        stringList.add("Moses");
        stringList.add("Kuberan");
       
        stringAdapter = new StringAdapter(MainActivity.this, R.layout.sort_list_item, stringList);
        mNameListView.setAdapter(stringAdapter);
       
        mAscButton.setOnClickListener(this);
        mDescButton.setOnClickListener(this);
       
       
    }
    // Comparator for Ascending Order
    public static Comparator<String> StringAscComparator = new Comparator<String>() {

        public int compare(String app1, String app2) {

            String stringName1 = app1;
            String stringName2 = app2;
           
            return stringName1.compareToIgnoreCase(stringName2);
        }
    };

    //Comparator for Descending Order
    public static Comparator<String> StringDescComparator = new Comparator<String>() {

        public int compare(String app1, String app2) {

            String stringName1 = app1;
            String stringName2 = app2;
           
            return stringName2.compareToIgnoreCase(stringName1);
        }
    };
   // Your Own Custom Adapter
    private class StringAdapter extends ArrayAdapter<String> {
        // Attributes
        private List<String> strModel;

        public StringAdapter(Context context, int textViewResourceId,
                List<String> strModel) {
            super(context, textViewResourceId, strModel);
            this.strModel = strModel;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = convertView;
            Holder holder = null;

            if (view == null) {
                view = View.inflate(MainActivity.this,
                        R.layout.sort_list_item, null);

                holder = new Holder();
                holder.StringNameTextView = (TextView) view
                        .findViewById(R.id.name_text_view);

                view.setTag(holder);
            } else {
                holder = (Holder) view.getTag();
            }
            String nameText=strModel.get(position);
            holder.StringNameTextView.setText(nameText);
            return view;
        }
    }
   
    static class Holder
    {
        private TextView StringNameTextView;
    }

    @Override
    public void onClick(View v) {

        switch(v.getId()) {
        case R.id.asc_button :
            Collections.sort(stringList, StringAscComparator);
            Toast.makeText(MainActivity.this, "Sorting in Ascending Order", Toast.LENGTH_LONG).show();
            break;
        case R.id.desc_button :
            Collections.sort(stringList, StringDescComparator);
            Toast.makeText(MainActivity.this, "Sorting in Descending Order", Toast.LENGTH_LONG).show();
            break;
        }
        stringAdapter.notifyDataSetChanged();
       
    }
}

Output :



Source Code :  Download this Example Here
















Simple Sectioned List Example in Android


Download this Sectionizer from the following url :

https://github.com/ragunathjawahar/simple-section-adapter

Add the following files  "Sectionizer.java" and "SimpleSectionAdapter" to your application project as shown in the following figure :

In Your Activity file as follows :

package com.rajeshvijayakumar.sectionedlist;

import com.rajeshvijayakumar.adapters.Sectionizer;
import com.rajeshvijayakumar.adapters.SimpleSectionAdapter;

public class SectionedListDemoActivity extends Activity implements OnItemClickListener {

    //Init Listview
    private ListView listView;

    //Declare List Data
    private List<String> stringList;


    // Declare CustomAdapter
     private StringAdapter stringAdapter;


   //Declare SimpleSectionAdapter
 private SimpleSectionAdapter<String> sectionAdapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sd_layout_list);
     
       // Initialize ListView
        listView=(ListView)findViewById(R.id.list_view);

       // Initialize array list and add data to the list
        stringList=new ArrayList<String>();
        stringList.add("Rajesh");
        stringList.add("Ramanan");
        stringList.add("Kannan");
        stringList.add("Mahesh");
        stringList.add("Moses");
        stringList.add("Kuberan");
       
        // Initialize Custom Adapter that you defined
        stringAdapter=new StringAdapter(this,R.id.item_textView, Sorting(stringList));

        //Initialize SimpleSectionAdapter and add your custom adapter and sectionizer class that you defined
        sectionAdapter=new SimpleSectionAdapter<String>(this, stringAdapter,
           R.layout.sd_layout_sectioned, R.id.title, new ListSectionizer());

       // set that sectionAdapter to listview
        listView.setAdapter(sectionAdapter);
        listView.setOnItemClickListener(this);
    }
   
   /// Defining your own Custom Adapter
    private class StringAdapter extends ArrayAdapter<String> {
        // Attributes
        private List<String> strModel;

        public StringAdapter(Context context, int textViewResourceId,
                List<String> strModel) {
            super(context, textViewResourceId, strModel);
            this.strModel = strModel;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = convertView;
            Holder holder = null;

            if (view == null) {
                view = View.inflate(SectionedListDemoActivity.this,
                        R.layout.sd_layout_list_item, null);

                holder = new Holder();
                holder.StringNameTextView = (TextView) view
                        .findViewById(R.id.item_textView);

                view.setTag(holder);
            } else {
                holder = (Holder) view.getTag();
            }
            String nameText=strModel.get(position);
            holder.StringNameTextView.setText(nameText);
            return view;
        }
    }
    static class Holder
    {
        private TextView StringNameTextView;
    }

    // Defining your own Sectionizer class  which can added to your sectionAdapter
    class ListSectionizer implements Sectionizer<String> {

        @Override
        public String getSectionTitleForItem(String itemName) {
            return itemName.toUpperCase().substring(0, 1);
        }
    }
   
   //Sort your list using comparator for sectioned list
    public static Comparator<String> StringComparator = new Comparator<String>() {

        public int compare(String app1, String app2) {

            String stringName1 = app1;
            String stringName2 = app2;
           
            return stringName1.compareToIgnoreCase(stringName2);
        }
    };

    private List<String> Sorting(List<String> Names) {
        Collections.sort(Names, StringComparator);
        return Names;
    }
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        // TODO Auto-generated method stub
        int index = sectionAdapter.getIndexForPosition(position);
        sectionAdapter.notifyDataSetChanged();
    }
   
   
}

sd_layout_list.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" >
    <ListView
        android:id="@+id/list_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
   
</LinearLayout>


sd_layout_list_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/item_textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>


sd_layout_sectioned.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/holo_blue_dark" >

    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"
        android:textSize="15dp"
        android:textStyle="bold" />

</RelativeLayout>


Output :





Source Code : Download this Example Here
















Relative Layout Example in Android


main.xml

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

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="23dp"
        android:layout_marginTop="22dp"
        android:text="Name"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/name_edit_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="23dp"
        android:layout_below="@id/textView1"
        android:ems="10" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/name_edit_text"
        android:layout_marginTop="24dp"
        android:layout_marginLeft="23dp"
        android:text="Password"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/password_edit_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="23dp"
        android:layout_below="@id/textView2"
        android:ems="10"
        android:inputType="textPassword" />

    <Button
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/password_edit_text"
        android:layout_marginTop="56dp"
        android:layout_toRightOf="@+id/textView2"
        android:text="Login" />

</RelativeLayout>


Output :



Source Code : Download this Example Here

Tuesday, 15 January 2013

Linear Layout Example in Android


In main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/contact_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/name_text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/contact_name" />

        <TextView
            android:id="@+id/phone_number"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/contact_no" />
    </LinearLayout>

</LinearLayout>



Output :






Source Code : Download this Example Here



Monday, 14 January 2013

Custom View Example in Android

Project Structure :



 activity_main.xml

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

    <com.rajeshvijayakumar.view.CustomViewEx
        android:id="@+id/custom_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</RelativeLayout>

CustomViewEx.java

package com.rajeshvijayakumar.view;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

public class CustomViewEx extends View {
    private PointF point;
    private Paint paint;

    public CustomViewEx(Context context) {
        this(context, null);
    }

    public CustomViewEx(Context context, AttributeSet attrs) {
        super(context, attrs);
        paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        if (point != null) {
            int radius = 50;
                paint.setColor(Color.GREEN);
                canvas.drawCircle(point.x, point.y, radius, paint);
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            point = new PointF(event.getX(), event.getY());
            break;
        case MotionEvent.ACTION_UP:
            point = null;
            break;
        case MotionEvent.ACTION_MOVE:
            point = new PointF(event.getX(), event.getY());
            break;
        }
        invalidate();
        return true;
    }
}

MainActivity.java

 package com.example.custom_view_example;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

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

AndroidManifest.xml


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

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.example.custom_view_example.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>
    </application>

</manifest>

Output :








Text to Speech Example in Android

Project Structure :



activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <EditText
        android:id="@+id/input_edit_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="78dp"
        android:ems="10" />

    <TextView
        android:id="@+id/label_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="28dp"
        android:text="Enter Text to Speak"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/speak_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/label_text_view"
        android:layout_below="@id/input_edit_text"
        android:layout_marginLeft="42dp"
        android:layout_marginTop="20dp"
        android:text="Speak" />

</RelativeLayout>


MainActivity.java


package com.rajeshvijayakumar.text2speech;

import java.util.Locale;

import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity implements OnInitListener, OnClickListener {

    private TextToSpeech mText2Speech;
    private EditText mInputEditText;
    private Button mSpeakButton;

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

        mInputEditText = (EditText) findViewById(R.id.input_edit_text);
        mSpeakButton = (Button) findViewById(R.id.speak_button);
        mText2Speech = new TextToSpeech(MainActivity.this, MainActivity.this);
        mSpeakButton.setOnClickListener(this);

    }

    @Override
    public void onInit(int status) {
      
        if(status == TextToSpeech.SUCCESS) {
            mText2Speech.setLanguage(Locale.getDefault());
        }
      
    }

    @Override
    public void onClick(View v) {

        String speakText = mInputEditText.getText().toString();
        switch(v.getId()) {
        case R.id.speak_button :
                if(mText2Speech.isSpeaking()) {
                    mText2Speech.stop();
                    mText2Speech.shutdown();
                } else {
                    mText2Speech.speak(speakText, TextToSpeech.QUEUE_FLUSH, null);
                }
            break;
        }
    }
}

AndroidMainfest.xml

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

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.rajeshvijayakumar.text2speech.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>
    </application>

</manifest>


Output :

























Context Menus Example in Android

Project Structure :


 

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" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world" />

</RelativeLayout>

context_menu.xml

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

    <item
        android:id="@+id/view"
        android:title="View"/>
    <item
        android:id="@+id/save"
        android:title="Save"/>
    <item
        android:id="@+id/edit"
        android:title="Edit"/>
    <item
        android:id="@+id/delete"
        android:title="Delete"/>

</menu>

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">context-menus-example</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>

    <string-array name="name_list">
        <item>Aakash</item>
        <item>Akshay</item>
        <item>Ashwin</item>
        <item>Mahesh</item>
        <item>Mrithula</item>
        <item>Rajesh</item>
        <item>Sabari</item>
        <item>Sai</item>
        <item>Sneha</item>
        <item>Sonika</item>
        <item>Sruthi</item>
        <item>Yeshwanthi</item>
    </string-array>

</resources>

MainActivity.java


package com.rajeshvijayakumar.context_menus_example;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.Toast;

public class MainActivity extends ListActivity {

    private String selectedName = "";
    private String[] nameList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        nameList = getResources().getStringArray(R.array.name_list);

        setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, nameList));

        registerForContextMenu(getListView());

    }

    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.context_menu, menu);
    }

    public boolean onContextItemSelected(MenuItem item) {

        AdapterContextMenuInfo adapInfo = (AdapterContextMenuInfo) item
                .getMenuInfo();
        selectedName = nameList[(int) adapInfo.id];

        switch (item.getItemId()) {
        case R.id.view:
            Toast.makeText(MainActivity.this,
                    "You have pressed View Context Menu for " + selectedName,
                    Toast.LENGTH_LONG).show();
            return true;
        case R.id.save:
            Toast.makeText(MainActivity.this,
                    "You have pressed Save Context Menu for " + selectedName,
                    Toast.LENGTH_LONG).show();
            return true;
        case R.id.edit:
            Toast.makeText(MainActivity.this,
                    "You have pressed Edit Context Menu for " + selectedName,
                    Toast.LENGTH_LONG).show();
            return true;
        case R.id.delete:
            Toast.makeText(MainActivity.this,
                    "You have pressed Delete Context Menu for " + selectedName,
                    Toast.LENGTH_LONG).show();
            return true;
        }
        return false;
    }
}

AndroidManifest.xml


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

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="16" />

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

</manifest>

Output :










Source Code : Download this Example Here

Options Menu Example in Android

Project Structure :


 

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/layout_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="32dp"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>


 option_menu.xml


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/save_menu_item"
          android:icon="@drawable/icon_save"
          android:title="Save" />

    <item android:id="@+id/delete_menu_item"
          android:icon="@drawable/icon_delete"
          android:title="Delete" /> 
</menu>


 MainActivity.java

 package com.rajeshvijaykumar.option_menus_example;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.option_menu, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.save_menu_item:
            Toast.makeText(MainActivity.this,
                    "You have Pressed Save Menu Item", Toast.LENGTH_SHORT)
                    .show();
            return true;
        case R.id.delete_menu_item:
            Toast.makeText(MainActivity.this,
                    "You have Pressed Delete Menu Item", Toast.LENGTH_SHORT)
                    .show();
            return true;
        }
        return false;
    }
}

AndroidManifest.xml

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

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name="com.rajeshvijaykumar.option_menus_example.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>
    </application>

</manifest>


Output :





Source Code : Download this example Here





Custom Adapter for Listview with Holder Pattern in android

Project Structure :



 

activity_main.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ListView
        android:id="@+id/contact_list_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</RelativeLayout>


list_item.xml


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

        <TextView
            android:id="@+id/name_text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="31dp"
            android:layout_marginTop="10dp"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />

        <ImageButton
            android:id="@+id/edit_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginTop="10dp"
            android:layout_marginRight="15dp"
            android:background="@android:color/transparent"
            android:src="@drawable/edit" />

    </RelativeLayout>

Contact.java


package com.rajeshvijayakumar.model;

public class Contact {

    private int id;
    private String name;
    private String phoneNumber;
    private String emailId;

    public Contact(int id, String name, String phoneNumber, String emailId) {
        this.id = id;
        this.name = name;
        this.phoneNumber = phoneNumber;
        this.emailId = emailId;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public String getEmailId() {
        return emailId;
    }

    public void setEmailId(String emailId) {
        this.emailId = emailId;
    }
}

ContactAdapter.java


package com.rajeshvijayakumar.adapter;

import java.util.List;

import android.content.Context;
import android.content.Intent;
import android.sax.StartElementListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

import com.rajeshvijayakumar.list.R;
import com.rajeshvijayakumar.list.TargetActivity;
import com.rajeshvijayakumar.model.Contact;

public class ContactAdapter extends ArrayAdapter<Contact> {

    private List<Contact> contactLst;
    private Context adapContext;

    public ContactAdapter(Context context, int textViewResourceId,
            List<Contact> contactLst) {
        super(context, textViewResourceId, contactLst);
        this.contactLst = contactLst;
        adapContext = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View view = convertView;
        ContactHolder contactHolder = null;

        if (convertView == null) {
            view = View.inflate(adapContext, R.layout.list_item, null);
           
            contactHolder = new ContactHolder();
            contactHolder.contactNameView = (TextView) view.findViewById(R.id.name_text_view);
            contactHolder.contactEditButton = (ImageButton) view.findViewById(R.id.edit_button);
           
            view.setTag(contactHolder);
        } else {
            contactHolder = (ContactHolder) view.getTag();
        }

        Contact contact = contactLst.get(position);
        final String name = contact.getName();
        contactHolder.contactNameView.setText(name);
        contactHolder.contactEditButton.setOnClickListener(new OnClickListener() {
           
            @Override
            public void onClick(View v) {

                switch(v.getId()) {
                case R.id.edit_button :
                    Toast.makeText(adapContext, "You have Pressed Edit Button For " + name, Toast.LENGTH_LONG).show();
                    break;
                }
            }
        });
        return view;
    }

    static class ContactHolder {
        public TextView contactNameView;
        public ImageButton contactEditButton;
    }
}


MainActivity.java


package com.rajeshvijayakumar.list;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;

import com.rajeshvijayakumar.adapter.ContactAdapter;
import com.rajeshvijayakumar.model.Contact;

public class MainActivity extends Activity {

    private ListView mContactListView;
    private List<Contact> mContactList;
    private ContactAdapter mContactAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        mContactListView = (ListView) findViewById(R.id.contact_list_view);
        mContactList = getContacts();
        mContactAdapter = new ContactAdapter(MainActivity.this, R.layout.list_item, mContactList);
        mContactListView.setAdapter(mContactAdapter);

    }

    private List<Contact> getContacts() {

        List<Contact> contactData = new ArrayList<Contact>();
        contactData.add(new Contact(1, "Aakash", "1111111111", null));
        contactData.add(new Contact(2, "Akshay", "2222222222", null));
        contactData.add(new Contact(3, "Ashwin", "3333333333", null));
        contactData.add(new Contact(4, "Mahesh", "4444444444", null));
        contactData.add(new Contact(5, "Mrithula", "5555555555", null));
        contactData.add(new Contact(6, "Rajesh", "6666666666", null));
        contactData.add(new Contact(7, "Sonika", "7777777777", null));
        return contactData;
    }
}


In AndroidMainfest.xml


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

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="16" />

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

</manifest>




Source Code : Download this example Here