Wednesday, October 30, 2013

Stop EditText from gaining focus at Activity startup


<!-- Dummy item to prevent AutoCompleteTextView from receiving focus -->
<LinearLayout
    android:focusable="true" android:focusableInTouchMode="true"
    android:layout_width="0px" android:layout_height="0px"/>

<!-- :nextFocusUp and :nextFocusLeft have been set to the id of this component
     to prevent the dummy from receiving focus again -->
<AutoCompleteTextView android:id="@+id/autotext"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:nextFocusUp="@id/autotext" android:nextFocusLeft="@id/autotext"/>



http://stackoverflow.com/questions/1555109/stop-edittext-from-gaining-focus-at-activity-startup

Saturday, October 19, 2013

Android GCM PushNotification Testing


Some time we need to simulate push notification into our android device for testing purpose .
This facilty is still not provided into inbuilt android sdk .
But same can be achived from online api testing site called Hurl.it

Below are steps for that

Step 1 : In the Destination combo box select Post

Step 2: Click on Add headers button and put the following values for name and vale
            name = "Authorization"   value= "key=YOU_GOOGLE_API_KEY"
            name="Content-Type"   value ="application/json"
Step 3: Click on Add Body and put the json values into following format

Step 4 :put  "https://android.googleapis.com/gcm/send"  in url filed

          {
  • "registration_ids":[
    1. "sdfsdfsdf",
    2. "GCM REGISTRATION TOEKM OF YOUR DEVICE"
    ]
    ,
  • "data":{
    • "message":"testing",
    • "usertype":"driver",
    • "bookingid":"8"
    }
}

registration_ids and data are mandatory fields and under data u can send any string data 


Step 4: click on Launch Request

You can see the response in following formate

{"multicast_id": 4635199670770759000,"success": 1,"failure": 1,"canonical_ids": 0,"results": [{"error": "InvalidRegistration"},{"message_id": "0:1382190107462279%63ac093bf9fd7ecd"}]}

Tuesday, October 1, 2013

Android Custom autocomplete

Below is the sample code for a cuatom Autocomplete EditText in android
click here to download the sample code

Android Custom Receiver

Following is the sample code to create a custom Broadcast Reciever (Local receiver ) in android.
Clikc  here to download the sample code

Monday, September 16, 2013

Android Transparency in percentage



use a color with alpha value like this #33------ and set it as background of your editText using the xml attribute android:background=" "
  1. 0% (transparent) -> #00 in hex
  2. 20% -> #33
  3. 50% -> #80
  4. 75% -> #C0
  5. 100% (opaque) -> #FF
255 * 0.2 = 51 ==> in hex 33

Android animation

This page is still in construction .
just collecting the various souces get to display simlpe and easy animations in android

http://android-er.blogspot.in/2012/02/various-effect-of-interpolator-in.html

Thursday, September 12, 2013

Sms Receiver and Parser

Android code to receive and parse a sms

Click here to download the sample code

Wednesday, September 4, 2013

Android Cron to pull data From server

This sample app polls data from server after 10 secs
Click here to download sample code

Monday, July 15, 2013

Android Google Map V2

Click here to get the sample code to download the source code.

The documentation for working with Google Map V2 is not clear documentated.
For above code to work properly you need to added google play service library  .
http://developer.android.com/google/play-services/setup.html

Generate the api key for android mobile at
https://code.google.com/apis/console/?pli=1#project:757763940378:access

Reference url

http://iamvijayakumar.blogspot.in/2013/04/android-draw-route-between-two-geo.html



Sunday, June 16, 2013

Android custom button with server checking animation

This is a demo code which polls sever after every 1 seconds and starts blinking if the repose is gretaer then 1 else stops blinking

Sunday, June 9, 2013

Android custom gallery

Click here to get the sample code custom android gallery with swipe gesture

Thursday, May 16, 2013

Wednesday, May 15, 2013

Android Slide Toggle button

Android Speech Buuble

Android View Pager

Android custom view pager for disabling default switch activity

Step 1.
PageViewActivity.java



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

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager.SimpleOnPageChangeListener;
import android.util.Log;
import android.view.View;

public class PageViewActivity extends FragmentActivity {
    MyPageAdapter pageAdapter;
    int pageId=0;
    CustomViewPager pager;
    PageListener pageListener;
    int currentPage=0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      List<Fragment> fragments = getFragments();
      pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);
      pager =(CustomViewPager)findViewById(R.id.viewpager);
      pager.setAdapter(pageAdapter);
      pager.setPagingEnabled(false);
     
      pageListener = new PageListener();
      pager.setOnPageChangeListener(pageListener);
     
    }
   
    private List<Fragment> getFragments(){
     List<Fragment> fList = new ArrayList<Fragment>();
   
     fList.add(MyFragment.newInstance("Fragment 1"));
     fList.add(MyFragment.newInstance("Fragment 2"));
     fList.add(MyFragment.newInstance("Fragment 3"));
     return fList;
    }
   
    public void next(View v){
    if(pageId<=2)
    {
    pager.setCurrentItem(pageId);
    }
    pageId++;
   
    }
   
    private class PageListener extends SimpleOnPageChangeListener{
        public void onPageSelected(int position) {
            Log.i("test", "onPageSelected " + position);
            currentPage = position;
         }
        //Called when the scroll state changes.
        public void onPageScrollStateChanged(int state)
        {
       
        }
       
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
        {
        Log.i("test", "onPageScrolled " + position);
            currentPage = position;
        }
    }
   

  }


Step 2.
MyPageAdapter .java


import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

class MyPageAdapter extends FragmentPagerAdapter {
 private List<Fragment> fragments;

 public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) {
   super(fm);
   this.fragments = fragments;
 }
 @Override
 public Fragment getItem(int position) {
   return this.fragments.get(position);
 }

 @Override
 public int getCount() {
   return this.fragments.size();
 }
}

Step 3.
MyFragment.java


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MyFragment extends Fragment {
public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";

public static final MyFragment newInstance(String message)
{
  MyFragment f = new MyFragment();
  Bundle bdl = new Bundle(1);
  bdl.putString(EXTRA_MESSAGE, message);
  f.setArguments(bdl);
  return f;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
  Bundle savedInstanceState) {
  String message = getArguments().getString(EXTRA_MESSAGE);
  View v = inflater.inflate(R.layout.myfragment_layout, container, false);
  TextView messageTextView = (TextView)v.findViewById(R.id.textView);
  messageTextView.setText(message);

  return v;
}
}

Step 4.
CustomViewPager.java


import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;

public class CustomViewPager extends android.support.v4.view.ViewPager {
private boolean enabled;
public CustomViewPager(Context context, AttributeSet attrs) {
         super(context, attrs);
         this.enabled = true;
    }

@Override
public boolean onTouchEvent(MotionEvent event) {
if (this.enabled) {
        return super.onTouchEvent(event);
}

return false;
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
        if (this.enabled) {
                return super.onInterceptTouchEvent(event);
        }

        return false;
}

/**
 * Custom implementation to enable or not swipe :)
 *
 * @param enabled
 *            true to enable swipe, false otherwise.
 */
public void setPagingEnabled(boolean enabled) {
        this.enabled = enabled;
}

}

Step 5.
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" >

   <com.example.viewpagerdemo.CustomViewPager
     android:id="@+id/viewpager"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent" />

</RelativeLayout>

Step 6.
myfragment_layout.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    />
  <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Next"
      android:onClick="next"
      />

</RelativeLayout>

http://architects.dzone.com/articles/android-tutorial-using
http://blog.evoxmusic.fr/content/android-how-disable-viewpager-page-switch

Android GSON parsing


Step 1.
Download the Gson library from http://code.google.com/p/google-gson/ and add it to your java build path in eclipse.

Step 2.
Create a php file and paste the following json data into it

{"as_of":"Thu, 25 Feb 2010 11:30:17 +0000","trends"
:[{"name":"#nowplaying",
"url":"http://search.twitter.com/search?q=%23nowplaying"}
,{"name":"#nothingworsethan",
"url":"http://search.twitter.com/search?q=%23nothingworsethan"},
{"name":"Dubai Mall",
"url":"http://search.twitter.com/search?q=%22Dubai+Mall%22"},
{"name":"iPad Gets",
"url":"http://search.twitter.com/search?q=%22iPad+Gets%22"},
{"name":"#SuperJuniorTrot",
"url":"http://search.twitter.com/search?q=%23SuperJuniorTrot"},
{"name":"Justin Bieber",
"url":"http://search.twitter.com/search?q=%22Justin+Bieber%22"},
{"name":"Click",
"url":"http://search.twitter.com/search?q=Click"},
{"name":"Jaebum",
"url":"http://search.twitter.com/search?q=Jaebum"},
{"name":"#tosavemoney",
"url":"http://search.twitter.com/search?q=%23tosavemoney"},
{"name":"Protection",
"url":"http://search.twitter.com/search?q=Protection"}]}

Step 3.
Create the following two classes to hold the information of the json data

TwitterTrend .java

public class TwitterTrend {
    public String name;
    public String url;
}

TwitterTrends .java

public class TwitterTrends {

    public String as_of;
    public List<TwitterTrend> trends;
    
    public String getAs_Of() {
        return as_of;
    }
    public void setAs_Of(String asOf) {
        as_of = asOf;
    }
    public List<TwitterTrend> getTrends() {
        return trends;
    }
    public void setTrends(List<TwitterTrend> trends) {
        this.trends = trends;
    }
   
}

Step 4. create the main activity 
MainActivity.java


public class MainActivity extends Activity {

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



public InputStream getJSONData(String url){
        DefaultHttpClient httpClient = new DefaultHttpClient();
        URI uri;
        InputStream data = null;
        try {
            uri = new URI(url);
            HttpGet method = new HttpGet(uri);
            HttpResponse response = httpClient.execute(method);
            data = response.getEntity().getContent();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return data;
    }

public void runJSONParser(){
        try{
        Log.i("MY INFO", "Json Parser started..");
        Gson gson = new Gson();
        Reader r = new InputStreamReader(getJSONData("http://10.0.2.2/gsonTest/index.php"));
        Log.e("MY INFO", r.toString());
        TwitterTrends objs = gson.fromJson(r, TwitterTrends.class);
        Log.e("MY INFO", ""+objs.getTrends().size());
        for(TwitterTrend tr : objs.getTrends()){
            Log.e("TRENDS", tr.name + " - " + tr.url);
        }
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }

}

step 5.
Add the following lines into the xml file
 <uses-permission android:name="android.permission.INTERNET" /> 

Step 6.
run the app , u will see the following log


05-15 22:01:54.623: I/MY INFO(1796): Json Parser started..
05-15 22:01:54.733: E/MY INFO(1796): java.io.InputStreamReader@43e55058
05-15 22:01:54.773: E/MY INFO(1796): 10
05-15 22:01:54.773: E/TRENDS(1796): #nowplaying - http://search.twitter.com/search?q=%23nowplaying
05-15 22:01:54.773: E/TRENDS(1796): #nothingworsethan - http://search.twitter.com/search?q=%23nothingworsethan
05-15 22:01:54.773: E/TRENDS(1796): Dubai Mall - http://search.twitter.com/search?q=%22Dubai+Mall%22
05-15 22:01:54.773: E/TRENDS(1796): iPad Gets - http://search.twitter.com/search?q=%22iPad+Gets%22
05-15 22:01:54.773: E/TRENDS(1796): #SuperJuniorTrot - http://search.twitter.com/search?q=%23SuperJuniorTrot
05-15 22:01:54.773: E/TRENDS(1796): Justin Bieber - http://search.twitter.com/search?q=%22Justin+Bieber%22
05-15 22:01:54.773: E/TRENDS(1796): Click - http://search.twitter.com/search?q=Click
05-15 22:01:54.773: E/TRENDS(1796): Jaebum - http://search.twitter.com/search?q=Jaebum
05-15 22:01:54.773: E/TRENDS(1796): #tosavemoney - http://search.twitter.com/search?q=%23tosavemoney
05-15 22:01:54.773: E/TRENDS(1796): Protection - http://search.twitter.com/search?q=Protection

http://www.softwarepassion.com/android-series-parsing-json-data-with-gson/

Sunday, May 12, 2013

Send Xml Data From Android to PHP server


package com.example.sendxmltest;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
HttpClient httpclient = new DefaultHttpClient();
   HttpPost httppost = new HttpPost("http://10.0.2.2/server_log/index.php");

   try {
       StringEntity se = new StringEntity( "<aaaLogin inName=\"admin\" inPassword=\"admin123\"/>", HTTP.UTF_8);
       se.setContentType("text/xml");
       httppost.setEntity(se);

       HttpResponse httpresponse = httpclient.execute(httppost);
       HttpEntity resEntity = httpresponse.getEntity();
       Log.e("test",EntityUtils.toString(resEntity));
       //tvData.setText(EntityUtils.toString(resEntity));

   } catch (ClientProtocolException e) {
       // TODO Auto-generated catch block
    Log.e("test",e.getMessage());
       e.printStackTrace();
   } catch (IOException e) {
       // TODO Auto-generated catch block
    Log.e("test",e.getMessage());
    e.printStackTrace();
   }
}

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

}


PHP code to receive xml data 

<?php
  /*
   * XML Server.
   */
  // We use php://input to get the raw $_POST results.
  $xml_post = file_get_contents('php://input');
  // If we receive data, save it.
  if ($xml_post) {
    $xml_file = 'received_xml_' . date('Y_m_d-H-i-s') . '.xml';
    $fh       = fopen($xml_file, 'w') or die();
    fwrite($fh, $xml_post);
    fclose($fh);
    // Return, as we don't want to cause a loop by processing the code below.
echo "data xml --".$xml_post;
  }
 // print_r($_SERVER);
  
  return;
?>


Saturday, May 4, 2013

Android CutomArrayAdapter with CheckBox

Contact.java


package com.example.testandroid;

public class Contact {
    public String name;
    public String phone;
    public Boolean selected;
    public Contact()
    {
   
    }
    public Contact(String name,String phone){
    this.name=name;
    this.phone=phone;
    this.selected=false;
    }
}

ContactsAdapter.java


package com.example.testandroid;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;

public class ContactsAdapter extends ArrayAdapter<Contact>{

    Context context;
    int layoutResourceId,temp;  
    ArrayList<Contact> data;
   
    public ContactsAdapter(Context context, int layoutResourceId, ArrayList<Contact> data) {
        super(context, layoutResourceId, data);
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        ContactHolder holder = null;
        Contact contact = data.get(position);
        final int pos=position;
        temp=position;
        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);
           
            holder = new ContactHolder();
            holder.name = (TextView)row.findViewById(R.id.name);
            holder.phone = (TextView)row.findViewById(R.id.mobile);
            holder.chkBox = (CheckBox)row.findViewById(R.id.chk_sel);
            holder.chkBox.setOnClickListener( new View.OnClickListener() {
                public void onClick(View v) {
                 CheckBox cb = (CheckBox) v ;
                 //Contact contact = (Contact) cb.getTag();
                 Toast.makeText(context,"Clicked on Checkbox: " + data.get(pos).name +" is " + cb.isChecked(),Toast.LENGTH_LONG).show();
                 data.get(pos).selected=cb.isChecked();
                 }
               });
            row.setTag(holder);
        }
        else
        {
            holder = (ContactHolder)row.getTag();
        }
       
       
        holder.name.setText(contact.name);
        holder.phone.setText(contact.phone);
       
        return row;
    }
   
    static class ContactHolder
    {
    TextView name;
        TextView phone;
        CheckBox chkBox;
    }
}

MainActivity.java


package com.example.testandroid;

import java.util.ArrayList;
import java.util.ListIterator;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
    ArrayList<Contact> mContacts;
    ListView listView1;
    ContactsAdapter adapter;
    String mAction;
    ListIterator<Contact> litr ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContacts=new ArrayList<Contact>();

for(int i=0;i<10;i++)
{
Contact c=new Contact("name"+i,"9748544"+i);
mContacts.add(c);
}

adapter = new ContactsAdapter(this,R.layout.container, mContacts);
               
        listView1 = (ListView)findViewById(R.id.lisstview);
     
        listView1.setAdapter(adapter);
}

// Initiating Menu XML file (menu.xml)
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.layout.menu, menu);
        return true;
    }
   
    public void add_edit_dialog(String title,String action){
    mAction=action;
        LayoutInflater factory = LayoutInflater.from(this);
        final View textEntryView = factory.inflate(R.layout.add_edit_dialog, null);
        Dialog d= new AlertDialog.Builder(MainActivity.this)
            .setTitle(title)
            .setView(textEntryView)
            .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                String name,phoneno;
                EditText et_name,et_phone;
                et_name=(EditText)textEntryView.findViewById(R.id.name_edit);
                et_phone=(EditText)textEntryView.findViewById(R.id.mobile_edit);
                name=et_name.getText().toString();
                phoneno=et_phone.getText().toString();
                if(mAction.equals("add"))
                {
                Contact c=new Contact(name,phoneno);
                mContacts.add(c);
                listView1.setAdapter(adapter);
                adapter.notifyDataSetChanged();
                }
                else if(mAction.equals("edit"))
                {
                Toast.makeText(getApplicationContext(), "mae="+name, Toast.LENGTH_LONG).show();
                litr = mContacts.listIterator();
                while (litr.hasNext()) {
                Contact element = litr.next();
                         if(element.selected==true)
                      {
                          element.name=name;
                          element.phone=phoneno;
                      }
                Log.e("test","name is "+element.name);
               
                }
                listView1.setAdapter(adapter);
                adapter.notifyDataSetChanged();
                }
                    /* User clicked OK so do some stuff */
                }
            })
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {

                    /* User clicked cancel so do some stuff */
                }
            })
            .create();
        d.show();
    }
   
    /**
     * Event Handling for Individual menu item selected
     * Identify single menu item by it's id
     * */
    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
       
        switch (item.getItemId())
        {
        case R.id.menu_add:
            // Single menu item is selected do something
            // Ex: launching new activity/screen or show alert message
            Toast.makeText(MainActivity.this, "Add is Selected", Toast.LENGTH_SHORT).show();
            add_edit_dialog("Add Contact","add");
            return true;

        case R.id.menu_edit:
            Toast.makeText(MainActivity.this, "Edit is Selected", Toast.LENGTH_SHORT).show();
            add_edit_dialog("Edit Contact","edit");
            return true;

        case R.id.menu_del:
            Toast.makeText(MainActivity.this, "del is Selected", Toast.LENGTH_SHORT).show();
            litr = mContacts.listIterator();
            while (litr.hasNext()) {
           Contact element = litr.next();
           if(element.selected==true)
        {
            litr.remove();
        }
         
            }
            /* for(int i=0;i<mContacts.size();i++)
            {
            if(mContacts.get(i).selected==true)
            {
            mContacts.remove(i);
            }
            }*/
            listView1.setAdapter(adapter);
            adapter.notifyDataSetChanged();
            return true;

        default:
            return super.onOptionsItemSelected(item);
        }
    }  

}


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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

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

</RelativeLayout>

add_edit_dialog.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="wrap_content"
    android:orientation="vertical">

    <TextView 
        android:id="@+id/name_view"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:text="Name"
        android:gravity="left"
        android:textAppearance="?android:attr/textAppearanceMedium" />
            
    <EditText
        android:id="@+id/name_edit"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:scrollHorizontally="true"
        android:autoText="false"
        android:capitalize="none"
        android:gravity="fill_horizontal"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/mobile_view"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:text="Mobile no"
        android:gravity="left"
        android:textAppearance="?android:attr/textAppearanceMedium" />
            
    <EditText
        android:id="@+id/mobile_edit"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:scrollHorizontally="true"
        android:autoText="false"
        android:capitalize="none"
        android:gravity="fill_horizontal"
        android:password="true"
        android:textAppearance="?android:attr/textAppearanceMedium" />
        
</LinearLayout>

container.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:weightSum="4"
    android:layout_height="match_parent">
<LinearLayout
   android:layout_height="wrap_content"
   android:layout_width="0dp"
   android:orientation="vertical"
   android:layout_weight="3">
   <TextView
       android:id="@+id/name"
       android:text="Name"
       android:layout_width="match_parent"
       android:layout_height="wrap_content">
   </TextView>
   <TextView
       android:paddingLeft="10dp"
       android:id="@+id/mobile"
       android:text="Mobile"
       android:layout_width="match_parent"
       android:layout_height="wrap_content">
   </TextView>
    </LinearLayout>
    <LinearLayout
   android:layout_height="wrap_content"
   android:layout_width="0dp"
   android:gravity="center"
   android:layout_weight="1">
   <CheckBox
        android:id="@+id/chk_sel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />
    </LinearLayout>

    

</LinearLayout>


menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_add"
          android:title="Add" />
 
    <item android:id="@+id/menu_del"
          android:title="Delete" />
 
    <item android:id="@+id/menu_edit"
          android:title="Edit" />
   
</menu>