Android 下载以下页面数据时,是否有方法在RecyclerView的最后一项下方显示进度(圆形)?
我正在创建一个应用程序,在其中我实现了无限滚动到Android 下载以下页面数据时,是否有方法在RecyclerView的最后一项下方显示进度(圆形)?,android,parse-platform,android-recyclerview,Android,Parse Platform,Android Recyclerview,我正在创建一个应用程序,在其中我实现了无限滚动到RecyclerView,但当我到达第一页的底部时,该应用程序将挂起,直到下载下一页的数据。下载后,它开始工作。是否有任何方法显示RecyclerView中最后一项下方的进度(圆形),下载下一页数据后,圆形进度圈消失,我们的下一页将显示在下方 请求项目类别代码如下所示 public class RequestItems extends AsyncTask<Void, Void, Void> { Context context; Prog
RecyclerView
,但当我到达第一页的底部时,该应用程序将挂起,直到下载下一页的数据。下载后,它开始工作。是否有任何方法显示RecyclerView
中最后一项下方的进度(圆形),下载下一页数据后,圆形进度圈消失,我们的下一页将显示在下方
请求项目类别代码如下所示
public class RequestItems extends AsyncTask<Void, Void, Void> {
Context context;
ProgressDialog progressDialog;
List<ParseObject> parseObjects;
List<FeedItem> feedItems=new ArrayList<>();
EventsRecyclerView eventsRecyclerView;
RecyclerView recyclerView;
int skip=0;
ProgressBar progressBar;
RequestItems(Context context,RecyclerView recyclerView) {
this.context = context;
this.recyclerView=recyclerView;
}
@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(context);
progressDialog.setMessage("Loading");
progressDialog.show();
progressDialog.setCancelable(false);
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
eventsRecyclerView=null;
Loadmore(eventsRecyclerView);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
progressDialog.dismiss();
final EventsRecyclerView eventsRecyclerView=new EventsRecyclerView(context,feedItems);
int spacingInPixels = context.getResources().getDimensionPixelSize(R.dimen.spacing2);
recyclerView.addItemDecoration(new SpacesItemDecoration(spacingInPixels));
LinearLayoutManager manager=new LinearLayoutManager(context);
recyclerView.setLayoutManager(manager);
recyclerView.setOnScrollListener(new EndlessScroll(manager, context) {
@Override
public void onLoadMore(int current_page) {
Log.d("amar", "requestitem");
skip = skip + 6;
Loadmore(eventsRecyclerView);
// eventsRecyclerView.notifyDataSetChanged();
}
});
recyclerView.setAdapter(eventsRecyclerView);
}
private void Loadmore(EventsRecyclerView eventsRecyclerView) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("Events");
query.setSkip(skip);
query.setLimit(6);
query.orderByDescending("createdAt");
try {
parseObjects = query.find();
} catch (ParseException e) {
e.printStackTrace();
}
if (!parseObjects.isEmpty()) {
for (int i = 0; i < parseObjects.size(); i++) {
FeedItem item = new FeedItem();
item.setTitle(parseObjects.get(i).getString("Title"));
item.setDate(parseObjects.get(i).getString("Date"));
item.setTime(parseObjects.get(i).getString("Time"));
item.setVenue(parseObjects.get(i).getString("Venue"));
item.setLike(parseObjects.get(i).getBoolean("Like"));
ParseFile file = parseObjects.get(i).getParseFile("EventImage");
try {
byte bytes[] = file.getData();
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
Bitmap bitmap1 = Bitmap.createScaledBitmap(bitmap,100,150,true);
item.setEventImage(bitmap1);
feedItems.add(item);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
if (eventsRecyclerView!=null){
eventsRecyclerView.notifyDataSetChanged();
}
}
}
帮我把这个放在你的项目里它很有效
private int currentFirstVisibleItem;
private int currentVisibleItemCount;
private int currentScrollState;
private int totalItemCount;
private int mNumOfAllBooks;
当你实例化你的listview时
mLoadingMoreFlag = false;
mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
currentScrollState = scrollState;
if (currentVisibleItemCount > 0 && currentScrollState == SCROLL_STATE_IDLE) {
if (mListView.getLastVisiblePosition() == (mAdapter.getCount() - 1)) {
if (totalItemCount != mNumOfAllBooks) {
if (!mLoadingMoreFlag) {
mLoadingMoreFlag = true;
loadMore();
}
}
}
}
}
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, final int totalItemCount) {
currentFirstVisibleItem = firstVisibleItem;
currentVisibleItemCount = visibleItemCount;
}
});
在loadmore中:
private void loadMore() {
mProgress.setVisibility(View.VISIBLE);
....
}
只需将mProgress放在布局的底部,并将listview放在xml中 我已经对这篇文章做了相当大的整理,如果它以任何方式失去了它原来的意义,我会重新编辑它。
private void loadMore() {
mProgress.setVisibility(View.VISIBLE);
....
}