Here is the implementation of this task.
EndlessScrollBaseAdapter.java
package com.example.endlessscrollinbothdirections; import java.util.Map; import android.content.Context; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.BaseAdapter; import android.widget.TextView; public abstract class EndlessScrollBaseAdapter<T> extends BaseAdapter implements OnScrollListener { private int mVisibleThreshold = 5;
EndlessScrollAdapter.java
package com.example.endlessscrollinbothdirections; import java.util.Map; import android.app.Activity; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class EndlessScrollAdapter extends EndlessScrollBaseAdapter<Integer> { public EndlessScrollAdapter(Activity activity, Map<Integer, Integer> list) { super(activity, list); } @Override public View getDataRow(int position, View convertView, ViewGroup parent) { TextView TextView; if (convertView == null) { TextView = new TextView(mContext); } else { TextView = (TextView) convertView; } TextView.setText("virtualPosition: " + (position - EndlessScrollBaseAdapter.VIRTUAL_MIDDLE_OFFSET) + "\n" + "row data: " + mItems.get(position - EndlessScrollBaseAdapter.VIRTUAL_MIDDLE_OFFSET)); return TextView; } @Override public void onLoadMore(int virtualPosition) {
MainActivity.java
package com.example.endlessscrollinbothdirections; import java.util.HashMap; import java.util.Map; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.widget.ListView; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView = (ListView) findViewById(R.id.lvItems); Map<Integer, Integer> items = new HashMap<Integer, Integer>(); EndlessScrollAdapter endlessScrollAdapter = new EndlessScrollAdapter(this, items); listView.setAdapter(endlessScrollAdapter); listView.setSelection(EndlessScrollBaseAdapter.VIRTUAL_MIDDLE_OFFSET); listView.setOnScrollListener(endlessScrollAdapter); } }
activity_main.xml
<ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lvItems" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView>
source share