• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Last page condition in android

krishnaveni

Well-Known Member
Hi i have to developed listview with load more button using xml parsing in android application.

Here i have faced some problem.

my xml feed is empty means how can hide the load more button on last page.

This is my full android code:
Code:
public class CustomizedListView extends Activity {
    // All static variables
    private String URL = "http://dev.mmm.com/xctesting/xcart444pro/retrieve.php?page=23";
    // XML node keys
    static final String KEY_SONG = "Order"; 
    static final String KEY_ID = "orderid";
    static final String KEY_TITLE = "orderid";
    static final String KEY_DATE = "date";
    static final String KEY_ARTIST = "payment_method";
    int current_page = 23;
    
    ListView lv;
    LazyAdapter adapter;
    ProgressDialog pDialog;
    Button btnLoadMore;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        lv = (ListView) findViewById(R.id.list);

        ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();

        XMLParser parser = new XMLParser();
        String xml = parser.getXmlFromUrl(URL); // getting XML from URL
        Document doc = parser.getDomElement(xml); // getting DOM element
        
        NodeList nl = doc.getElementsByTagName(KEY_SONG);
        
        // looping through all song nodes <song>
        for (int i = 0; i < nl.getLength(); i++) {
            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();
            Element e = (Element) nl.item(i);
            // adding each child node to HashMap key => value
            map.put(KEY_ID, parser.getValue(e, KEY_ID));
            map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
            map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
           songsList.add(map);
        }
        
        btnLoadMore = (Button) findViewById(R.id.btn_load);
       
       adapter = new LazyAdapter(this, songsList);
        lv.setAdapter(adapter);
        
        /**
         * Listening to Load More button click event
         * */
        btnLoadMore.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // Starting a new async task
                new loadMoreListView().execute();
            }
        });
    }
    
        private class loadMoreListView extends AsyncTask<Void, Void, Void> {

            @Override 
            protected void onPreExecute() {
                // Showing progress dialog before sending http request
                pDialog = new ProgressDialog(
                        CustomizedListView.this);
                pDialog.setMessage("Please wait..");
                //pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.my_progress_indeterminate));
                pDialog.setIndeterminate(true);
                pDialog.setCancelable(false);
                pDialog.show(); 
                
                pDialog.setContentView(R.layout.custom_dialog);
                
                
            }
            
            protected Void doInBackground(Void... unused) {
                runOnUiThread(new Runnable() {
                    public void run() {
                        // increment current page
                        current_page += 1;
                        
                        // Next page request
                        URL = "http://dev.mmm.com/xctesting/xcart444pro/retrieve.php?page=" + current_page;

                        ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();

                        XMLParser parser = new XMLParser();
                        String xml = parser.getXmlFromUrl(URL); // getting XML from URL
                        Document doc = parser.getDomElement(xml); // getting DOM element
                        
                        NodeList nl = doc.getElementsByTagName(KEY_SONG);
                        for (int i = 0; i < nl.getLength(); i++) { 
                            // creating new HashMap
                            HashMap<String, String> map = new HashMap<String, String>();
                            Element e = (Element) nl.item(i);
                            
                            // adding each child node to HashMap key => value
                            map.put(KEY_ID, parser.getValue(e, KEY_ID));
                            map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
                            map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
                            songsList.add(map);
                        }
                        
                        // get listview current position - used to maintain scroll position
                        int currentPosition = lv.getFirstVisiblePosition();
                        
                        // Appending new data to menuItems ArrayList
                        adapter = new LazyAdapter(
                                CustomizedListView.this,
                                songsList);
                        lv.setAdapter(adapter);
                        // Setting new scroll position
                    lv.setSelectionFromTop(currentPosition + 1, 0);

                    }
                });

                return (null);
            }
            
protected void onPostExecute(Void unused) {
         pDialog.dismiss();
                }
        }
    }

Now am getting the below results:

http://screencast.com/t/G3D9xt4bbEZV

Click load more button means go to next page and displayed like below

http://screencast.com/t/fTl4FETd

Again click load more button means go to next page and displayed like below

http://screencast.com/t/oUq2vdu8e
-------------------------------------------------------------------------------------------------------------
last_page = ((nl.getLength() == 0));
if (last_page == true)
{
btnLoadMore.setVisibility(View.GONE);
pDialog.dismiss();
}

means am getting following output:
http://screencast.com/t/G3D9xt4bbEZV

Click load more button means go to next page and displayed like below
http://screencast.com/t/fTl4FETd

Again click load more button means go to next page and displayed like below
http://screencast.com/t/wCugJB1CgG

please help me.how can i hide the button on my lastpage.Hide the button on this page.(http://screencast.com/t/fTl4FETd)
 
Back
Top Bottom