ListView Pagination Ex-1

Main Activity

package com.rakhi577.listviewpagenavigation;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {   
    
	private ListView listview;
	private TextView title;
	private Button btn_prev;
	private Button btn_next;
	
	private ArrayList<String> data;
	ArrayAdapter<String> sd;
	
	private int pageCount ;
	
	/**
	 * Using this increment value we can move the listview items
	 */
	private int increment = 0;
	
	/**
	 * Here set the values, how the ListView to be display
	 * 
	 * Be sure that you must set like this
	 * 
	 * TOTAL_LIST_ITEMS > NUM_ITEMS_PAGE
	 */
	
	public int TOTAL_LIST_ITEMS = 1030;
	public int NUM_ITEMS_PAGE   = 100;
	
	public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listview = (ListView)findViewById(R.id.list);
    btn_prev	 = (Button)findViewById(R.id.prev);
    btn_next	 = (Button)findViewById(R.id.next);
    title	 = (TextView)findViewById(R.id.title);
    
    btn_prev.setEnabled(false);
    
    data = new ArrayList<String>();
    
    /**
     * this block is for checking the number of pages
     * ====================================================
     */
    
    int val = TOTAL_LIST_ITEMS%NUM_ITEMS_PAGE;
	val = val==0?0:1;
	pageCount = TOTAL_LIST_ITEMS/NUM_ITEMS_PAGE+val;
	/**
	 * =====================================================
	 */
    
    /**
     * The ArrayList data contains all the list items
     */
    for(int i=0;i<TOTAL_LIST_ITEMS;i++)
    {
    	data.add("This is Item "+(i+1));
    }
    
    loadList(0);
    
    btn_next.setOnClickListener(new OnClickListener() {
		
		public void onClick(View v) {
			
			increment++;
			loadList(increment);
			CheckEnable();
		}
	});
    
    btn_prev.setOnClickListener(new OnClickListener() {
		
		public void onClick(View v) {
			
			increment--;
			loadList(increment);
			CheckEnable();
		}
	});

	}
	
	/**
	 * Method for enabling and disabling Buttons
	 */
	private void CheckEnable()
	{
		if(increment+1 == pageCount)
		{
			btn_next.setEnabled(false);
		}
		else if(increment == 0)
		{
			btn_prev.setEnabled(false);
		}
		else
		{
			btn_prev.setEnabled(true);
			btn_next.setEnabled(true);
		}
	}
	
	/**
	 * Method for loading data in listview
	 * @param number
	 */
	private void loadList(int number)
	{
		ArrayList<String> sort = new ArrayList<String>();
		title.setText("Page "+(number+1)+" of "+pageCount);
		
		int start = number * NUM_ITEMS_PAGE;
		for(int i=start;i<(start)+NUM_ITEMS_PAGE;i++)
		{
			if(i<data.size())
			{
				sort.add(data.get(i));
			}
			else
			{
				break;
			}
		}
		sd = new ArrayAdapter<String>(this,
	            android.R.layout.simple_list_item_1,
	            sort);
		listview.setAdapter(sd);
	}
}
 

Xml Layout for this activity

<?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/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="@android:color/black"
        android:gravity="center"
        android:textSize="16sp"
        android:background="@android:color/darker_gray"
        android:padding="10dp"/>

    <ListView 
	    android:id="@+id/list"
	    android:divider="#000"
	    android:dividerHeight="1dp"
	    android:cacheColorHint="#00000000"
		android:layout_width="fill_parent"
		android:layout_height="0dp"
		android:layout_weight="1"
		android:fadingEdge="none"/>
    
    <LinearLayout 
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:orientation="horizontal" >

    <Button
        android:id="@+id/prev"
        android:text="Prev"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        />
    
    <Button
        android:id="@+id/next"
        android:text="Next"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        />
</LinearLayout>
</LinearLayout>

ListView Page navigation Ex-1

You can find source code here

Advertisements

3 thoughts on “ListView Pagination Ex-1

  1. Pingback: ListView Page navigation Ex-1

  2. Pingback: How to implement pagination in Android listview : Android Community - For Application Development

  3. Pingback: Load more data into ListView – Android : Android Community - For Application Development

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s