Listview Pagination in android

后端 未结 1 1483
忘了有多久
忘了有多久 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 userClass=new ArrayList();
    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(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(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(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:

    
    
        
      
           
      
         
            
          
         
    
           
    
    

    Create userlist.xml

    
    
       
    
    

    Add my_border.xml into Drawable folder:

    
    
    
    
    
    
    ![enter image description here][1]
    

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

    Let me know it work for you.

    Thanks

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