public class TestingActivity extends FragmentActivity { RecyclerView recyclerView; LinearLayoutManager mLayoutManager; MyAdapter mAdpt; ImageLoader imageLoader = ImageLoader.getInstance(); ArrayList arrayListTesting = new ArrayList(); int currentPage = 0; int totalPage = 0; boolean isShowLoadingViewing = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.setStatusBarColor(ContextCompat.getColor(this, R.color.colorprimary)); } setContentView(R.layout.activity_notification); recyclerView = (RecyclerView) findViewById(R.id.recyclerView); recyclerView.setHasFixedSize(true); mLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); // GridLayoutManager mLayoutManager = new GridLayoutManager(this, 2); // 2 is span size recyclerView.setLayoutManager(mLayoutManager); imageLoader.init(GetOption.getConfig(TestingActivity.this)); onLoadmore(true); } // Adapter public class MyAdapter extends RecyclerView.Adapter { @Override public int getItemCount() { return arrayListMain.size() + 1; } @Override public void onBindViewHolder(final RecyclerView.ViewHolder main_holder, final int position) { if (position > getItemCount() - 2 && isShowLoadingViewing) { isShowLoadingViewing = false; onLoadmore(false); } if (main_holder instanceof ViewHolderFooter) { if (totalPage == getItemCount() - 1) { final ViewHolderFooter holder_footer = (ViewHolderFooter) main_holder; holder_footer.rootRelLayout.getLayoutParams().height = 0; } } else { final ViewHolderNormal holder = (ViewHolderNormal) main_holder; final TestData data = arrayListMain.get(position); holder.textView.setText("Position: " + position); imageLoader.displayImage(data.profilepic, holder.ivProfile, GetOption.getFullOption(getResources().getDimensionPixelSize(R.dimen.profiledimen)), new SimpleImageLoadingListener() { @Override public void onLoadingStarted(String imageUri, View view) { } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { } @Override public void onLoadingComplete(String imageUri, View view, final Bitmap loadedImage) { } }); } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewtype) { if (viewtype == 1) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.footer, parent, false); ViewHolderFooter vh = new ViewHolderFooter(v); return vh; } else { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.normal_layout_row, parent, false); ViewHolderNormal vh = new ViewHolderNormal(v); return vh; } } ArrayList arrayListMain; public MyAdapter(ArrayList arrayListMain) { this.arrayListMain = arrayListMain; } @Override public int getItemViewType(int position) { if (position == getItemCount() - 1) { return 1; } else { return 0; } } } public class ViewHolderNormal extends RecyclerView.ViewHolder { ImageView ivProfile; TextView textView; public ViewHolderNormal(View v) { super(v); ivProfile = (ImageView) v.findViewById(R.id.ivProfile); textView = (TextView) v.findViewById(R.id.textView); } } public class ViewHolderFooter extends RecyclerView.ViewHolder { RelativeLayout rootRelLayout; public ViewHolderFooter(View v) { super(v); rootRelLayout = (RelativeLayout) v.findViewById(R.id.rootRelLayout); } } public void onLoadmore(boolean isShowLoadingView) { // Our WebAPIHelper WebAPIHelper webhelper = new WebAPIHelper(Constant.TEST_ID, TestingActivity.this, isShowLoadingView); webhelper.callRequest("your_test_url?id=" + "&page=" + currentPage); } public void setResponse(int requestNumber, int total, ArrayList arrNotiData) { // TODO Auto-generated method stub SharedPref.setPreference(SharedPref.NOTIFICATION_LAST_COUNTER, total, TestingActivity.this); totalPage = total; currentPage++; if (arrNotiData.size() > 0) { if (recyclerView.getAdapter() == null) { arrayListTesting = new ArrayList(arrNotiData); mAdpt = new MyAdapter(arrayListTesting); recyclerView.setAdapter(mAdpt); } else { int presize = arrayListTesting.size(); arrayListTesting.addAll(arrNotiData); mAdpt.notifyItemRangeInserted(presize, arrNotiData.size()); } if (totalPage > currentPage) isShowLoadingViewing = true; } else { isShowLoadingViewing = false; } } }