Saturday 22 February 2014

Android Fragment Tab Example | Bottom Fragment Tab | Custom Tab Item


Hello Friends Today I will write code for Fragment Tab at Bottom .

Step 1 : Create a project BottomTabFragment

Step 2 :  MainActivity.java

package com.smart.sms;

import android.os.Bundle;
import android.content.Context;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.TabHost.TabSpec;

public class MainActivity extends FragmentActivity  {

private static final String TAB_1_TAG = "tab_1";
private static final String TAB_2_TAG = "tab_2";
private static final String TAB_3_TAG = "tab_3";

private FragmentTabHost mTabHost;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InitView();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();

}

private void InitView() {
mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);


        mTabHost.addTab(setIndicator(MainActivity.this,mTabHost.newTabSpec(TAB_1_TAG),
                R.drawable.tab_indicator_gen,"Audio",R.drawable.genres_icon),Tab1Container.class,null);
        mTabHost.addTab(setIndicator(MainActivity.this,mTabHost.newTabSpec(TAB_2_TAG),
               R.drawable.tab_indicator_gen,"Video",R.drawable.genres_icon),Tab2Container.class,null);
        mTabHost.addTab(setIndicator(MainActivity.this,mTabHost.newTabSpec(TAB_3_TAG),
               R.drawable.tab_indicator_gen,"Latest",R.drawable.genres_icon),Tab3Container.class,null);
     
     
}

@Override
public void onBackPressed() {
boolean isPopFragment = false;
String currentTabTag = mTabHost.getCurrentTabTag();

if (currentTabTag.equals(TAB_1_TAG)) {
isPopFragment = ((BaseContainerFragment)getSupportFragmentManager().findFragmentByTag(TAB_1_TAG)).popFragment();
} else if (currentTabTag.equals(TAB_2_TAG)) {
isPopFragment = ((BaseContainerFragment)getSupportFragmentManager().findFragmentByTag(TAB_2_TAG)).popFragment();
}
else if (currentTabTag.equals(TAB_3_TAG)) {
isPopFragment = ((BaseContainerFragment)getSupportFragmentManager().findFragmentByTag(TAB_3_TAG)).popFragment();
}

if (!isPopFragment) {
finish();
}
}

private TabSpec setIndicator(Context ctx, TabSpec spec,
int resid, String string, int genresIcon) {
      View v = LayoutInflater.from(ctx).inflate(R.layout.tab_item, null);
      v.setBackgroundResource(resid);
      TextView tv = (TextView)v.findViewById(R.id.txt_tabtxt);
      ImageView img = (ImageView)v.findViewById(R.id.img_tabtxt);
     
      tv.setText(string);
      img.setBackgroundResource(genresIcon);
      return spec.setIndicator(v);
}


}

Step 3 : activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
 
     <FrameLayout
        android:id="@+id/realtabcontent"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1" />
            
    <android.support.v4.app.FragmentTabHost
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="0dip"
            android:layout_height="0dip"
            android:layout_weight="0" />
        
    </android.support.v4.app.FragmentTabHost>
    
   
</LinearLayout>

Step 3.1 : Create a drawable folder in res and create  tab_indicator_gen.xml  ,download image from here





Step 3.2 : tab_indicator_gen.xml

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

    <item android:drawable="@drawable/tab_select" android:state_selected="true"/>
    <item android:drawable="@drawable/tab_select" android:state_pressed="true"/>
    <item android:drawable="@drawable/tab_black"/>

</selector>


Step 4 : tab_item.xml

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

    <TextView
        android:id="@+id/txt_tabtxt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/img_tabtxt"
        android:layout_marginTop="2dp"
        android:textSize="13dp"
        android:layout_centerHorizontal="true"
        android:text="Medium Text"
        android:textColor="@android:color/white"
        android:textStyle="bold"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <ImageView
        android:id="@+id/img_tabtxt"
        android:layout_width="33dp"
        android:layout_height="30dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
    
        />

</RelativeLayout>

Step 5 : BaseContainerFragment.java

package com.smart.sms;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;

public class BaseContainerFragment extends Fragment {

public void replaceFragment(Fragment fragment, boolean addToBackStack) {
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
if (addToBackStack) {
  transaction.addToBackStack(null);
}
transaction.replace(R.id.container_framelayout, fragment);
transaction.commit();
getChildFragmentManager().executePendingTransactions();
}
public boolean popFragment() {
Log.e("Ritesh", "pop fragment: " + getChildFragmentManager().getBackStackEntryCount());
boolean isPop = false;
if (getChildFragmentManager().getBackStackEntryCount() > 0) {
isPop = true;
getChildFragmentManager().popBackStack();
}
return isPop;
}
}


Step 6 : container_framelayout.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container_framelayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    

</FrameLayout>


Step 7 : Tab1Container.java

package com.smart.sms;

import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Tab1Container extends BaseContainerFragment {

private boolean IsViewInited;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.e("Ritesh", "Tab1");
return inflater.inflate(R.layout.container_fragment, null);
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
  if (!IsViewInited) {
IsViewInited = true;
initView();
}
}

private void initView() {
replaceFragment(new AudioFragment(), false);
}

}


Step8 :  Tab2Container.java

package com.smart.sms;

import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Tab2Container extends BaseContainerFragment {
private boolean IsViewInited;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.e("Ritesh", "Tab2");
return inflater.inflate(R.layout.container_fragment, null);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (!IsViewInited) {
IsViewInited = true;
initView();
  }
}
private void initView() {
replaceFragment(new VideoFragment(), false);
}
}

Step 9: Tab3Container.java

package com.smart.sms;

import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Tab3Container extends BaseContainerFragment {
private boolean IsViewInited;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.e("Ritesh", "Tab3");
return inflater.inflate(R.layout.container_fragment, null);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (!IsViewInited) {
IsViewInited = true;
initView();
}
}
private void initView() {
replaceFragment(new LatestFragment(), false);
}
}

Step 10: AudioFragment.java 

package com.smart.sms;

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 AudioFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.audio, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
TextView tv=(TextView)getActivity().findViewById(R.id.textset);
tv.setText("Audio");
}

}

Step 11 :  audio.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/textset"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:textColor="#00FF00"
        android:gravity="center"
        android:textSize="35sp"
        android:background="@android:color/black"
        android:textStyle="bold"

        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

Step 12 : LatestFragment.java

package com.smart.sms;

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 LatestFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.audio, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
TextView tv=(TextView)getActivity().findViewById(R.id.textset);
tv.setText("Latest");
}

}

Step 13 : VideoFragment.java 

package com.smart.sms;

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

public class VideoFragment extends Fragment implements OnClickListener{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.audio, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
TextView tv=(TextView)getActivity().findViewById(R.id.textset);
tv.setText("Video");
tv.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
((BaseContainerFragment)getParentFragment()).replaceFragment(new VideoDescription(), true);
}

}

Step 14: VideoDescription.java 

package com.smart.sms;

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 VideoDescription extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.audio, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
TextView tv=(TextView)getActivity().findViewById(R.id.textset);
tv.setText("Video Description");
}

}

Step 15 : AndroidManifest 

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

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

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

Step 16 : Run The Project













Friday 21 February 2014

Android ViewPager Example



Hello Friends Today I will write code for View pager in fragment not in fragment activity.

Step 1 : MainActivity.java

package com.ritesh.viewpagerdemo;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

public class MainActivity extends FragmentActivity {

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

FragmentManager fm=getSupportFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
ft.add(R.id.mainlayout, new FragmentMain());
ft.commit();

}


}

Step 2 : activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/mainlayout" >

</FrameLayout>

Step 3 : FragmentMain.java

package com.ritesh.viewpagerdemo;

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

public class FragmentMain extends Fragment
{

public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.fragmentmain, container, false);
}
      @Override
      public void onActivityCreated(Bundle savedInstanceState) {
 // TODO Auto-generated method stub
 super.onActivityCreated(savedInstanceState);
ViewPager pager = (ViewPager)getActivity().findViewById(R.id.viewPager);
pager.setAdapter(new MyPagerAdapter(getActivity().getSupportFragmentManager()));
      }



}

Step 4 : fragmentmain.xml

<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/viewPager"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />


Step 5:  MyPagerAdapter.java

package com.ritesh.viewpagerdemo;

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

public class MyPagerAdapter extends FragmentPagerAdapter
{

public MyPagerAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}

@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return  NewsFragment.newInstance();
case 1:
return  AudioFragment.newInstance();
     }
return null;
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return 2;
}

}


Step 6 : AudioFragment.java

package com.ritesh.viewpagerdemo;

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

public class AudioFragment extends Fragment
{

public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.audio, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
 }
public static Fragment newInstance() {
// TODO Auto-generated method stub
return new AudioFragment();
}
}

Step 7 :  audio.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/textaudio"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textColor="#00FF00"
        android:gravity="center"
        android:textSize="25sp"
        android:background="@android:color/black"
        android:textStyle="bold"
        android:text="Audio" />

</RelativeLayout>


Step 8 : NewsFragment.java

package com.ritesh.viewpagerdemo;

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

public class NewsFragment  extends Fragment
 {

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.news, container, false);
    }
 @Override
 public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
      }
 public static Fragment newInstance() {
// TODO Auto-generated method stub
return new NewsFragment();
    }
   }

Step 9 :  news.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/textnews"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textStyle="bold"
        android:textColor="#00FF00"
        android:gravity="center"
        android:textSize="25sp"
        android:background="@android:color/black"
        android:text="News" />

</RelativeLayout>


Step 10 : Run the Project














Thursday 20 February 2014

Android Sqlite Example | Existing Sqlite DataBase | Large Sqlite DataBase | Insert , Delete, Retrieve By Sqlite DataBase


 Hello Friends Today I will write a code for large existing database (assets does not allow for insert large data in that condition break your sqlite db in multiple part for each part size must be less than 1 mb .For break large sqlite use jtsplit software)

Step 1: Create Project SqliteDemo .

Step 2 : Create Sqlite Database and save as Riteshdb.sqlite .

Step 3: Create new Table Student with two field name,phone and add some name and phone no then save it.

Step 4 : Copy your Database and paste in assets folder .

Step 5: Write this code in MainActivity


package com.ritesh.sqlitedemo;

import java.io.IOException;
import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.database.SQLException;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class MainActivity extends Activity {
private DatabaseHandler  databaseHandler;
EditText insertname,insertphone,entename;
Button buttonshow,Insertbutton,buttondelete;

private ListView listview;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
databaseHandler = new DatabaseHandler(MainActivity.this);
databaseHandler.createdatabase();

} catch (IOException ioe) {
throw new Error("Unable to create database");
}
try {
databaseHandler.opendatabase();
} catch (SQLException sqle) {
throw sqle;
}

insertname=(EditText)findViewById(R.id.insertname);
insertphone=(EditText)findViewById(R.id.insertphone);
entename=(EditText)findViewById(R.id.entename);

Insertbutton=(Button)findViewById(R.id.Insertbutton);
buttonshow=(Button)findViewById(R.id.buttonshow);
buttondelete=(Button)findViewById(R.id.buttondelete);
listview=(ListView)findViewById(R.id.listViewshowall);
Insertbutton.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(insertname.getText().toString().length()>0&&insertphone.getText().toString().length()>0)
{
databaseHandler.insertvalue(insertname.getText().toString(), insertphone.getText().toString());}
   }
});

buttonshow.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

ArrayList<StudentEntity> list=databaseHandler.Getvalue(entename.getText().toString());
ListViewAdapter adapter=new ListViewAdapter(MainActivity.this, list);
listview.setAdapter(adapter);



}
});

buttondelete.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (entename.getText().toString().length()>0) {
databaseHandler.DeleteValue(entename.getText().toString());
}

}
});
}
}

Step 6: Write this code in 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/insertname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:hint="Insert Name"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/insertphone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/insertname"
        android:hint="Insert Phone"
        android:ems="10" />

    <EditText
        android:id="@+id/entename"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/Insertbutton"
        android:layout_marginTop="14dp"
        android:ems="10"
        android:hint="Delete Name" />

    <Button
        android:id="@+id/buttondelete"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/entename"
        android:text="Delete" />

    <Button
        android:id="@+id/buttonshow"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/entename"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="14dp"
        android:text="ShowAll" />

    <ListView
        android:id="@+id/listViewshowall"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/buttonshow"
        android:layout_centerHorizontal="true" >

    </ListView>

    <Button
        android:id="@+id/Insertbutton"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/insertphone"
        android:layout_alignBottom="@+id/insertphone"
        android:layout_alignParentRight="true"
        android:text="Insert" />

</RelativeLayout>


Step 7: Write this code in DatabaseHandler

package com.ritesh.sqlitedemo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import android.app.Activity;
import android.content.ContentValues;
import android.content.res.AssetManager;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHandler extends SQLiteOpenHelper {

public static final String TAG = "DatabaseHandler";

private SQLiteDatabase db;
private Activity activity;
    private String DB_PATH = "/data/data/com.ritesh.sqlitedemo" + "/databases/";

private static String DB_NAME = "Riteshdb.sqlite";

public DatabaseHandler(Activity activity) throws IOException {
super(activity, DB_NAME, null, 1);
this.activity = activity;
boolean dbexist = checkdatabase();
if (dbexist) {
Log.d("Ritesh", "Database exists");
opendatabase();
} else {
System.out.println("Database doesn't exist");
createdatabase();
}
}

public void createdatabase() throws IOException {
boolean dbexist = checkdatabase();
if (dbexist) {
System.out.println(" Database exists.");
} else {
this.getReadableDatabase();
try {
copydatabase();
} catch (IOException e) {
e.printStackTrace();
}
}
}

private boolean checkdatabase() {
boolean checkdb = false;
try {
String myPath = DB_PATH + DB_NAME;
Log.d("Trong", "DB_PATH + DB_NAME " + DB_PATH + DB_NAME);
File dbfile = new File(myPath);
checkdb = dbfile.exists();
} catch (SQLiteException e) {
Log.d("Trong", "Database doesn't exist");
}
return checkdb;
}

    private void copydatabase() throws IOException {
        AssetManager am = activity.getAssets();
        OutputStream os = new FileOutputStream(DB_PATH + DB_NAME);
        byte[] b = new byte[1024];
        String[] files = am.list("");
        Arrays.sort(files);
        int r;
        
        // Split large db using jt split software and insert all in assets folder then  add it at runtime 
        
        // For multiple db replace this two line
        
        // for (int i = 1; i <= 4; i++) {
        // InputStream is = am.open("Riteshdb.sqlite"+i);
        
        // Currently I used a single db
        
        for (int i = 1; i <= 1; i++) {
            InputStream is = am.open("Riteshdb.sqlite");
            while ((r = is.read(b)) != -1) {
                os.write(b, 0, r);
            }
           Log.d("Ritesh", "Part:"+i);
            is.close();
        }
        os.close();
    }

public void opendatabase() throws SQLException {
// Open the database
String mypath = DB_PATH + DB_NAME;
db = SQLiteDatabase.openDatabase(mypath, null,
SQLiteDatabase.OPEN_READWRITE);
}

public synchronized void close() {
if (db != null) {
db.close();
}
super.close();
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}


public void insertvalue(String name, String phone) {
// TODO Auto-generated method stub
ContentValues cvalue=new ContentValues();
cvalue.put("name", name);
cvalue.put("phone", phone);
db.insert("Student", null, cvalue);
}
public void DeleteValue(String value) {
// TODO Auto-generated method stub
db.delete("Student", "name="+"'"+value+"'", null) ;


}
public ArrayList<StudentEntity> Getvalue(String entername) {
ArrayList<StudentEntity> listentity = new ArrayList<StudentEntity>();
String selectQuery = "SELECT  * FROM "+"student";
    
Cursor cursor = db.rawQuery(selectQuery, null);

if (cursor.moveToFirst()) {
do {
StudentEntity sentity = new StudentEntity();
sentity.setName(cursor.getString(0));
sentity.setPhone(cursor.getString(1));
listentity.add(sentity);
} while (cursor.moveToNext());
}

// return contact list
return listentity;
}

}

Step 8 : Write this code in StudentEntity

package com.ritesh.sqlitedemo;

public class StudentEntity {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
String name;
String phone;

}


Step 9: Write this code in ListViewAdapter

package com.ritesh.sqlitedemo;

import java.util.ArrayList;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class ListViewAdapter extends BaseAdapter{
 LayoutInflater layoutinflater;
 ArrayList<StudentEntity> listhash;
 Activity activity;
 private ViewHolder holder;

 public ListViewAdapter(Activity activity,
   ArrayList<StudentEntity> list) {
  // TODO Auto-generated constructor stub
  this.listhash=list;
  this.activity=activity;
  this.layoutinflater=LayoutInflater.from(activity);
 }

 private class ViewHolder {
  public TextView tvname,phone;
 }
 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return listhash.size();
 }

 @Override
 public Object getItem(int arg0) {
  // TODO Auto-generated method stub
  return null;
 }

 @Override
 public long getItemId(int arg0) {
  // TODO Auto-generated method stub
  return 0;
 }

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

  if (convertView == null) {
   convertView = layoutinflater.inflate(R.layout.list_item,
     null);
   holder = new ViewHolder();
   holder.tvname = (TextView) convertView
     .findViewById(R.id.text_name);
   holder.phone = (TextView) convertView
    .findViewById(R.id.texphoneno);
   
   convertView.setTag(holder);
  } else {
   holder = (ViewHolder) convertView.getTag();
  }
  holder.tvname.setText(listhash.get(position).getName());
  holder.phone.setText(listhash.get(position).getPhone());

  return convertView;
 }


}

Step 10 : Write this code in list_item.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="70dp"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/text_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
       android:layout_marginTop="8dp"
        android:layout_marginLeft="56dp"
        android:text="Name"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/texphoneno"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text_name"
        android:layout_alignLeft="@+id/text_name"
        android:layout_alignParentBottom="true"
        android:text="TextView" />

</RelativeLayout>

Step 11 : Write this code in your manifest file

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

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

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

Step 12 : Run The Project










Wednesday 19 February 2014

Android Map V2 Marker Example


Hello friends Today I will write a code for Android map v2 marker .

Step 1: Create a project MapV2Example .

Step 2: Import google-play-services_lib in your workspace , this is the path  if you allready installed Google play Service >

sdk\extras\google\google_play_services\libproject   otherwise install google play service using this link >

http://developer.android.com/google/play-services/setup.html

Step 3: Go to Eclipse> Window>Prefrences>Android>Build  Copy SHA1 fingureprint(With heigher sdk) for lower sdk type this command : 

C:\Program Files\Java\jre7\bin>keytool -list -v -keystore "C:\Users\Admin\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android 

you will get SHA1 key from here

Step 4 : Go to api console >Click on Service >Click on to Google Maps Android API v2 

Step 5: Go to Api access Create New Android key 

Step 6 :Insert SHA1 key and package name like this > BC:0D:AC:74:DR:21:E1:41:67:71:9B:62:91:KF:A1:66:6E:44:5D:75;com.ritesh.mapv2example
 (SHA1 Key ,package name) >Click create

Step7 : Now you will get api key from here .

Step 8 : Copy this code in your MainActivity :

package com.ritesh.mapv2example;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends FragmentActivity  {
private GoogleMap map;
private LatLng ltlng;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InitialiseMap();
Button buttonreload1=(Button)findViewById(R.id.buttonreload);
Button buttonreload2=(Button)findViewById(R.id.buttonreload2);
buttonreload1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
map.clear();
ltlng=new LatLng(55, 45);
map.addMarker(new MarkerOptions()
       .position(ltlng)
       .title("Hello world1:"));
}
});
         buttonreload2.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
map.clear();
ltlng=new LatLng(75, 65);
map.addMarker(new MarkerOptions()
       .position(ltlng)
       .title("Hello world2:"));
}
});

 }

private void InitialiseMap() {
// TODO Auto-generated method stub
if (map == null) {
map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map_frag))
                           .getMap();
   
 if (map != null) {
     

     }

 map.setMyLocationEnabled(true);
  for (int i = 60; i < 70; i++) {
  ltlng=new LatLng(i, i+30);

  map.addMarker(new MarkerOptions()
       .position(ltlng)
       .title("Hello world:"+i));
}
}
}
}

Step 9 : Copy this code in 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"
   >

    <fragment
        android:id="@+id/map_frag"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="50dp" />

    <Button
        android:id="@+id/buttonreload"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="Refreshmap1" 
       />
    
    <Button
        android:id="@+id/buttonreload2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Refreshmap2" />

</RelativeLayout>


Step 10 : Copy this code in your manifest file and change your map v2 api key  value (android:name="com.google.android.maps.v2.API_KEY"
    android:value="AIzaSyBEBy8jXbOTs6QVoeo3rn6QsiIZ81r52G0"/>)


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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>
    
      <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.ritesh.mapv2example.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>
        <meta-data
    android:name="com.google.android.gms.version"
    android:value="4030500" />
        <meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="AIzaSyBEBy8jXbOTs6QVoeo3rn6QsiIZ81r52G0"/>
        
    </application>
  

</manifest>

Step 11 : Run the project