android 加载更多,如何在android中实现加载更多的recyclerview

我想在Recyclerview中实现更多的加载.这是代码.

代码来自

github.

https://gist.github.com/ssinss/e06f12ef66c51252563e

MainActivity代码:

package com.example.tatson.bila;

import android.app.ProgressDialog;

import android.os.AsyncTask;

import android.support.v4.widget.SwipeRefreshLayout;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.support.v7.widget.LinearLayoutManager;

import android.support.v7.widget.RecyclerView;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import android.widget.Toast;

import com.android.volley.RequestQueue;

import com.android.volley.Response;

import com.android.volley.VolleyError;

import com.android.volley.toolbox.JsonArrayRequest;

import com.android.volley.toolbox.Volley;

import com.example.tatson.bila.CardAdapter;

import com.example.tatson.bila.Config;

import com.example.tatson.bila.SuperHeroes;

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

import org.w3c.dom.Text;

import java.util.ArrayList;

import java.util.List;

public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener{

SwipeRefreshLayout swipeLayout;

LinearLayoutManager mLayoutManager;

// initially offset will be 0, later will be updated while parsing the json

private int offSet = 0;

private int previousTotal = 0;

int pastVisiblesItems, visibleItemCount, totalItemCount;

private boolean loading = true; // True if we are still waiting for the last set of data to load.

private int visibleThreshold = 5; // The minimum amount of items to have below your current scroll position before loading more.

int firstVisibleItem;

private int current_page = 1;

//Creating a List of superheroes

private List listSuperHeroes;

//Creating Views

private RecyclerView recyclerView;

private RecyclerView.LayoutManager layoutManager;

private RecyclerView.Adapter adapter;

public String Img;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//Initializing Views

recyclerView = (RecyclerView) findViewById(R.id.recyclerView);

recyclerView.setHasFixedSize(true);

layoutManager = new LinearLayoutManager(this);

recyclerView.setLayoutManager(layoutManager);

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);

//Initializing our superheroes list

listSuperHeroes = new ArrayList<>();

mLayoutManager = new LinearLayoutManager(this);

recyclerView.setLayoutManager(mLayoutManager);

swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container);

swipeLayout.setOnRefreshListener(this);

swipeLayout.setColorSchemeResources(android.R.color.holo_blue_bright,

android.R.color.holo_green_light,

android.R.color.holo_orange_light,

android.R.color.holo_red_light);

swipeLayout.post(new Runnable() {

@Override

public void run() {

swipeLayout.setRefreshing(true);

getData();

}

}

);

recyclerView.addOnScrollListener(new EndlessRecyclerOnScrollListener(linearLayoutManager) {

@Override

public void onLoadMore(int current_page) {

Log.d("End","Sucess");

}

});

}

//This method will get data from the web api

private void getData(){

//Showing a progress dialog

// final ProgressDialog loading = ProgressDialog.show(this,"Loading Data", "Please wait...",false,false);

// appending offset to url

String url = Config.DATA_URL;

String url1 = url + offSet;

//Creating a json array request

JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(url1,

new Response.Listener() {

@Override

public void onResponse(JSONArray response) {

//Dismissing progress dialog

// loading.dismiss();

//calling method to parse json array

parseData(response);

adapter.notifyDataSetChanged();

// stopping swipe refresh

swipeLayout.setRefreshing(false);

}

},

new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError error) {

}

});

//Creating request queue

RequestQueue requestQueue = Volley.newRequestQueue(this);

//Adding request to the queue

requestQueue.add(jsonArrayRequest);

}

//This method will parse json data

private void parseData(JSONArray array){

for(int i = 0; i

SuperHeroes superHero = new SuperHeroes();

CardAdapter car = new CardAdapter();

JSONObject json = null;

try {

json = array.getJSONObject(i);

superHero.setImageUrl(json.getString(Config.TAG_IMAGE_URL));

Img =json.getString(Config.TAG_IMAGE_URL);

superHero.setName(json.getString(Config.TAG_NAME));

superHero.setRank(json.getInt(Config.TAG_RANK));

// superHero.setRealName(json.getString(Config.TAG_REAL_NAME));

//superHero.setCreatedBy(json.getString(Config.TAG_CREATED_BY));

//superHero.setFirstAppearance(json.getString(Config.TAG_FIRST_APPEARANCE));

int rank = json.getInt("pid");

// updating offset value to highest value

if (rank >= offSet)

offSet = rank;

// ArrayList powers = new ArrayList();

//JSONArray jsonArray = json.getJSONArray(Config.TAG_POWERS);

/* for(int j = 0; j

powers.add(((String) jsonArray.get(j))+"\n");

}*/

//superHero.setPowers(powers);

Log.d("test",Img);

car.setImageUrl(Img);

} catch (JSONException e) {

e.printStackTrace();

}

listSuperHeroes.add(superHero);

}

//Finally initializing our adapter

adapter = new CardAdapter(listSuperHeroes, this);

//Adding adapter to recyclerview

recyclerView.setAdapter(adapter);

}

@Override

public void onRefresh() {

listSuperHeroes.clear();

refreshItems();

}

void refreshItems() {

// Load items

getData();

// Load complete

onItemsLoadComplete();

}

void onItemsLoadComplete() {

// Update the adapter and notify data set changed

adapter.notifyDataSetChanged();

//Finally initializing our adapter

adapter = new CardAdapter(listSuperHeroes, this);

//Adding adapter to recyclerview

recyclerView.setAdapter(adapter);

// Stop refresh animation

}

}

EndlessRecyclerOnScrollListener类代码:

package com.example.tatson.bila;

/**

* Created by Tatson on 23-11-2015.

*/

import android.support.v7.widget.LinearLayoutManager;

import android.support.v7.widget.RecyclerView;

import android.util.Log;

public abstract class EndlessRecyclerOnScrollListener extends RecyclerView.OnScrollListener {

public static String TAG = EndlessRecyclerOnScrollListener.class.getSimpleName();

private int previousTotal = 0; // The total number of items in the dataset after the last load

private boolean loading = true; // True if we are still waiting for the last set of data to load.

private int visibleThreshold = 5; // The minimum amount of items to have below your current scroll position before loading more.

int firstVisibleItem, visibleItemCount, totalItemCount;

private int current_page = 1;

private LinearLayoutManager mLinearLayoutManager;

public EndlessRecyclerOnScrollListener(LinearLayoutManager linearLayoutManager) {

this.mLinearLayoutManager = linearLayoutManager;

}

@Override

public void onScrolled(RecyclerView recyclerView, int dx, int dy) {

super.onScrolled(recyclerView, dx, dy);

visibleItemCount = recyclerView.getChildCount();

totalItemCount = mLinearLayoutManager.getItemCount();

firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition();

if (loading) {

if (totalItemCount > previousTotal) {

loading = false;

previousTotal = totalItemCount;

}

}

if (!loading ) {

// End has been reached

// Do something

current_page++;

Log.d("End", "Sucess");

onLoadMore(current_page);

loading = true;

}

}

public abstract void onLoadMore(int current_page);

}

谢谢.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值