Listview Pagination in android

后端 未结 1 1482
忘了有多久
忘了有多久 2021-01-20 00:08

I have a listview where I have 50 elements being displayed. I have decided to paginate the view so on each part of the view there are 10 elements and then a next button is c

相关标签:
1条回答
  • 2021-01-20 00:26

    Below is my code to show list view with pagination. There is two blue button for change pages.

    You can customize according to you need.

    Create UserCategory.java

        package com.UserCategory;
    import java.net.URL;
    import java.util.ArrayList;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.xml.sax.InputSource;
    import android.app.Activity;
    import android.content.pm.ActivityInfo;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.Window;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.ImageView;
    import android.widget.ListView;
    
    public class UserCategory extends Activity implements OnClickListener{
    private final int PAGE_SIZE = 5;
    private int StartingIndex = 0;
    ArrayList<String> userClass=new ArrayList<String>();
    int textlength=0;
    
    private String lv_arr[];
    private ListView lv1;
    EditText searchText;
    
    //Button Previous;
    
    private String Machine[]={"Machine 1","Machine 2","Machine 3","Machine 4","Machine 5","Machine 6","Machine 7","Machine 8","Machine 9","Machine 10","Machine 11","Machine 12","Machine 1","Machine 2","Machine 3","Machine 4","Machine 5","Machine 6","Machine 7","Machine 8","Machine 9","Machine 10","Machine 11","Machine 12"};
    ImageView next,Previous;
    
    @Override        
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
          this.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
          setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            setContentView(R.layout.main);
            lv1=(ListView)findViewById(R.id.ListView01);
            searchText=(EditText)findViewById(R.id.et_Serchlist);
            next=(ImageView)findViewById(R.id.btn_next);
            Previous=(ImageView)findViewById(R.id.btn_previous);
            next.setOnClickListener(this);
            Previous.setOnClickListener(this);       
         //parsing();
        lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , Machine));
        changeListViewModel(0);
    
    
       }
    private void changelist(int startingIndex) {
    
        if(startingIndex < 0) {
            Previous=(ImageView)findViewById(R.id.btn_previous);
            ImageView back=(ImageView)findViewById(R.id.btn_Whiteprevious);
            back.setVisibility(1);
            Previous.setVisibility(4);
            startingIndex = 0;
        }else if(startingIndex >= userClass.size())
            startingIndex -= PAGE_SIZE;
        StartingIndex   = startingIndex;
        int endingIndex = startingIndex + PAGE_SIZE;
    
        System.out.println("ending index"+endingIndex);
        if(StartingIndex!=0){
            Previous=(ImageView)findViewById(R.id.btn_previous);
            ImageView back=(ImageView)findViewById(R.id.btn_Whiteprevious);
            back.setVisibility(4);
            Previous.setVisibility(1);
    
    
        }
        if(endingIndex == userClass.size()){
            ImageView Forward=(ImageView)findViewById(R.id.btn_grewforward);
            Forward.setVisibility(1);
             next=(ImageView)findViewById(R.id.btn_next);
             next.setVisibility(4);
        }
        if(endingIndex != userClass.size()){
            ImageView Forward=(ImageView)findViewById(R.id.btn_grewforward);
            Forward.setVisibility(4);
             next=(ImageView)findViewById(R.id.btn_next);
             next.setVisibility(1);
        }
        if(endingIndex > userClass.size()) endingIndex = userClass.size();
        try {
    
            String[] subSet = getDataSubset1(startingIndex, endingIndex);
            System.out.println("subSet array"+subSet);
            lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , subSet));
    
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private String[] getDataSubset1(int startingIndex, int endingIndex){
        String[] changeList = new String[endingIndex - startingIndex];
        int index = -1;
        for(int x = startingIndex; x < endingIndex; x++)
    
            changeList[++index] = userClass.get(x);
    
    
        return changeList;
    
    }
    
    private void changeListViewModel(int startingIndex){
    
        if(startingIndex < 0) {
            Previous=(ImageView)findViewById(R.id.btn_previous);
            ImageView back=(ImageView)findViewById(R.id.btn_Whiteprevious);
            back.setVisibility(1);
            Previous.setVisibility(4);
            startingIndex = 0;
        }
    
        else if(startingIndex >= Machine.length){
    
            startingIndex -= PAGE_SIZE;
        }
            System.out.println("strating"+startingIndex);
    
        System.out.println("startingIndex"+startingIndex);
        StartingIndex   = startingIndex;
        int endingIndex = startingIndex + PAGE_SIZE;
        System.out.println("endingIndex"+endingIndex);
         if(StartingIndex!=0)
         {
            Previous=(ImageView)findViewById(R.id.btn_previous);
            ImageView back=(ImageView)findViewById(R.id.btn_Whiteprevious);
            back.setVisibility(4);
            Previous.setVisibility(1);
            }
         if(endingIndex == userClass.size()){
                ImageView Forward=(ImageView)findViewById(R.id.btn_grewforward);
                Forward.setVisibility(1);
                 next=(ImageView)findViewById(R.id.btn_next);
                 next.setVisibility(4);
            }
         if(endingIndex != userClass.size()){
                ImageView Forward=(ImageView)findViewById(R.id.btn_grewforward);
                Forward.setVisibility(4);
                 next=(ImageView)findViewById(R.id.btn_next);
                 next.setVisibility(1);
            }
        System.out.println("ending index"+endingIndex);
        if(endingIndex > Machine.length) {
    
            endingIndex = Machine.length;
            ImageView Forward=(ImageView)findViewById(R.id.btn_grewforward);
            Forward.setVisibility(1);
             next=(ImageView)findViewById(R.id.btn_next);
             next.setVisibility(4);
        }
    
    
        String[] subSet = getDataSubset(startingIndex, endingIndex);
        System.out.println("subSet main array"+subSet.length);
        lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , subSet));
    }
    
    private String[] getDataSubset(int startingIndex, int endingIndex){
        String[] toRet = new String[endingIndex - startingIndex];
        int index = -1;
        System.out.println("index"+index);
        for(int x = startingIndex; x < endingIndex; x++)
            toRet[++index] = Machine[x];
    
        return toRet;
    
    }
    private void parsing() {
        // TODO Auto-generated method stub
        try {
    
            URL url = new URL("http://10.10.1.100/DogEventsWebService/EventService.svc/categories/1");
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(new InputSource(url.openStream()));
            doc.getDocumentElement().normalize();
    
            NodeList nodeList = doc.getElementsByTagName("UserCategory");
            Machine = new String[nodeList.getLength()];
    
    
            for (int i = 0; i < nodeList.getLength(); i++) 
            {
    
                Node node = nodeList.item(i);
                Machine[i] = new String();
    
                Element fstElmnt = (Element) node;
                NodeList nameList = fstElmnt.getElementsByTagName("ClassDescription");
                Element nameElement = (Element) nameList.item(0);
                nameList = nameElement.getChildNodes();
                Machine[i]=((Node) nameList.item(0)).getNodeValue();
             }
    
            System.out.println("after for loop Machine"+Machine);
    
        } catch (Exception e) {
            System.out.println("XML Pasing Excpetion = " + e);
        }
    }
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.btn_next:
    
            textlength=searchText.getText().length();
            System.out.println("nextbutton"+textlength);
            if(textlength==0){
                changeListViewModel(StartingIndex + PAGE_SIZE);
            }else{
                changelist(StartingIndex + PAGE_SIZE);
                }
    
            break;
        case R.id.btn_previous:
            textlength=searchText.getText().length();
            if(textlength==0){
            changeListViewModel(StartingIndex - PAGE_SIZE);
            }else{
            changelist(StartingIndex - PAGE_SIZE);
            }
             break;
            default:
            break;
         }
    }
    

    }

    create main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <View android:layout_height="35dp" 
          android:layout_width="fill_parent" 
          android:background="#ffffff"/>
      <TextView  android:id="@+id/tv_header"
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 
           android:text="@string/hello" 
           android:layout_alignParentTop="true" 
           android:layout_marginLeft="0dp"
           android:textSize="25dp"/>
           <EditText 
           android:id="@+id/et_Serchlist" 
         android:layout_height="35dp" 
         android:paddingLeft="19dp"
          android:layout_marginLeft="60dp"
         android:layout_toRightOf="@+id/tv_header"
         android:maxLength="20"
         android:maxLines="1"
         android:inputType="text"
         android:hint="Search" 
         android:textColor="#ffffff"
         android:background="@drawable/my_border"
         android:layout_width="100dip"/>
      <ListView 
       android:id="@+id/ListView01"
       android:layout_width="fill_parent"
       android:textSize="4px" 
       android:layout_below="@+id/tv_header"
       android:layout_above="@+id/btn_previous"
       android:layout_height="wrap_content" />
         <View android:layout_height="55dp" 
           android:layout_below="@+id/ListView0"
           android:layout_alignParentBottom="true"
           android:layout_width="fill_parent" 
           android:background="#ffffff"/>
            <ImageView 
            android:src="@drawable/grewprevious"  
            android:id="@+id/btn_Whiteprevious" 
            android:layout_width="wrap_content" 
           android:layout_marginLeft="12dp"
        android:layout_marginBottom="6dp"
        android:layout_below="@+id/ListView0" 
       android:visibility="invisible"
            android:layout_alignParentBottom="true"
            android:layout_height="wrap_content"/>
          <ImageView 
            android:src="@drawable/right"  
            android:id="@+id/btn_grewforward" 
            android:layout_width="wrap_content" 
            android:layout_marginLeft="259dp"
            android:layout_marginBottom="6dp"
            android:layout_below="@+id/ListView0" 
            android:visibility="invisible"
            android:layout_alignParentBottom="true"
            android:layout_height="wrap_content"/>
         <ImageView 
            android:src="@drawable/backward" 
           android:id="@+id/btn_previous"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_alignParentBottom="true"
           android:layout_marginLeft="12dp"
           android:layout_marginBottom="6dp"
           android:layout_below="@+id/ListView0"
           android:onClick="backButtonClicked"/>
    
        <ImageView android:src="@drawable/forward" 
         android:id="@+id/btn_next"
        android:layout_width="80dp" 
        android:layout_marginBottom="6dp"
        android:layout_height="wrap_content"
            android:layout_alignParentBottom="true" 
       android:layout_below="@+id/ListView0"
       android:layout_marginLeft="249dp"
        android:text="Next" 
        android:onClick="nextButtonClicked"/>   
    </RelativeLayout>
    

    Create userlist.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">
      <TextView android:id="@+id/tv_className"
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/> 
    </LinearLayout>
    

    Add my_border.xml into Drawable folder:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="2dip" android:color="#ee777777" />
    <solid android:color="#ee444444"/>
    <padding  
       android:left="20dip" 
      android:top="2dip" 
      android:right="20dip" 
      android:bottom="2dip" />
    <corners android:radius="15dip" />
    ![enter image description here][1]</shape>
    

    If it give error for iamges then use any other images and run application.

    Let me know it work for you.

    Thanks

    0 讨论(0)
提交回复
热议问题