Last updated on July 31st, 2016 at 11:14 am
Load data in scroll is one of them important and required feature of android application. Most of application have this functionality like facebook, Instagram, Google plus etc. . In this post i explain you how to implement this in your android application. Download
Android ListView with Scrolload
Create new project in your Studio / Eclipse.
actvity.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <ListView android:id="@+id/load" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> </RelativeLayout>
Create next xml file which we used to show progress bar
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ProgressBar android:layout_margin="5dp" android:id="@+id/progressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"/> </LinearLayout>
MainActivity.java
package com.refreshloaddata; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AbsListView; import android.widget.ArrayAdapter; import android.widget.ListView; import java.util.ArrayList; public class MainActivity extends Activity { ListView listView; String[] arrayS = new String[]{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"}; String[] arrayS2 = new String[]{"a1", "b1", "c1", "d1", "e1", "f1", "g1", "h1", "i1", "j1", "k1", "l1", "m1", "n1", "o1", "p1"}; int pageCount = 1; View footer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.load); final ArrayList<String> list = new ArrayList<String>(); for (int i = 0; i < arrayS.length; i++) { list.add(arrayS[i]); } // Add footer view footer = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.progress, null, false); listView.addFooterView(footer); final ArrayAdapter<String> ad = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, list); listView.setAdapter(ad); // Implementing scroll refresh listView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView absListView, int i) { } @Override public void onScroll(AbsListView absListView, int firstItem, int visibleItemCount, final int totalItems) { Log.e("Get position", "--firstItem:" + firstItem + " visibleItemCount:" + visibleItemCount + " totalItems:" + totalItems + " pageCount:" + pageCount); int total = firstItem + visibleItemCount; // Total array list i have so it if (pageCount < 2) { if (total == totalItems) { // Execute some code after 15 seconds have passed Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { for (int i = 0; i < arrayS2.length; i++) { list.add(arrayS2[i]); } ad.notifyDataSetChanged(); listView.setAdapter(ad); listView.setSelection(totalItems); pageCount++; } }, 15000); } } else { Log.e("hide footer", "footer hide"); listView.removeFooterView(footer); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
to show loading bar in bottom i use footer view
// Add footer view footer = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.progress, null, false); listView.addFooterView(footer);
Hope this helpfull.
Hapy coading 🙂 .