Sunday, August 11, 2013

ActionBar Tab ListFragment in Android

Hi Guys!

In this tutorial we are learning about the Action Bar Tab in android.
Action bar was introduced from API level 11. In this post I will explain how to create tab in action bar with fragments. The final result is shown below where user can move between tabs.

After these steps we have to create our tabs and add it to the action bar. In our example we create three different tabs. What we want is when user touches one of the tab the UI content changes. To achieve it we need two things:
  • Fragment that fills the UI when user changes the tab according to the tab selected
  • A listener that gets notification when user interacts with the tabs
 So we are using the List Fragment to show the list content when user touch on tab. So view the video for the same.


Lets Start the coding to make the tab by Action bar in Fragment Activity.

main_activity.xml



list_fragment.xml

 





MainActivity.java

package com.sunil.actionbartab;

import com.sunil.actionbartab.R;
import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {

private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item";

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

// Set up the action bar.
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

// For each of the sections in the app, add a tab to the action bar.
actionBar.addTab(actionBar.newTab().setText("My Friends").setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(R.string.title_section2).setTabListener(this));
actionBar.addTab(actionBar.newTab().setText(R.string.title_section3).setTabListener(this));
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));
}
}

@Override
public void onSaveInstanceState(Bundle outState) {
outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar().getSelectedNavigationIndex());
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}



@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}

@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {

/**
* On first tab we will show our list
*/
if (tab.getPosition() == 0) {
MyFriendsListFragment simpleListFragment = new MyFriendsListFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.container, simpleListFragment).commit();
}
else if (tab.getPosition() == 1) {
AndroidList androidlidt = new AndroidList();
getSupportFragmentManager().beginTransaction().replace(R.id.container, androidlidt).commit();
}



else {

AndroidVersionList androidversionlist = new AndroidVersionList();
getSupportFragmentManager().beginTransaction().replace(R.id.container, androidversionlist).commit();
}
}

@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
}

MyFriendsListFragment.java

package com.sunil.actionbartab;

import com.sunil.actionbartab.R;

import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MyFriendsListFragment extends ListFragment {

private String myfriends[];

public MyFriendsListFragment() {

myfriends = new String[] {
"Sandeep Pal",
"Abhi Tripathi",
"Amit Verma",
"Awadhesh Diwakar",
"Shishir Verma",
"Ravi",
};
}


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

ListAdapter listAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, myfriends);
setListAdapter(listAdapter);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.list_fragment, container, false);
}

@Override
public void onListItemClick(ListView list, View v, int position, long id) {

Toast.makeText(getActivity(), getListView().getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
}
}

AndroidList.java

package com.sunil.actionbartab;

import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class AndroidList extends ListFragment{

private String myandroidphone[];

public AndroidList() {

myandroidphone = new String[] {
"Samsung Gallexy S",
"Sony Experia",
"Nokiya Lumia",
"Google Nuxes",
"Micromax",

};
}

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

ListAdapter listAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, myandroidphone);
setListAdapter(listAdapter);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.list_fragment, container, false);
}

@Override
public void onListItemClick(ListView list, View v, int position, long id) {

Toast.makeText(getActivity(), getListView().getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
}
}

AndroidVersionList.java

package com.sunil.actionbartab;

import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class AndroidVersionList extends ListFragment{

private String myandroidversions[];
public AndroidVersionList() {
myandroidversions= new String[] {
"Jelly Bean",
"Ice cream Sandwich",
"GingerBread",
"HoneyComb",
"Friyo",

};

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

ListAdapter listAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, myandroidversions);
setListAdapter(listAdapter);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.list_fragment, container, false);
}

@Override
public void onListItemClick(ListView list, View v, int position, long id) {

Toast.makeText(getActivity(), getListView().getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
}
}





You can download the source code ActionBar ListFregment

Rocky

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.

0 comments:

Post a Comment

 

Copyright @ 2013 Android Developers Tipss.