android - 滚动 RecyclerView 后单击不起作用
问题描述
我是应用程序开发人员的新手,想用 json api 和 WordPress 作为后端制作应用程序。我可以获取帖子,它工作正常,直到前 10 个帖子,当我点击每个帖子时,我也可以看到帖子详细信息,但是在第 11 个帖子或滚动到下一页时,点击不起作用并且应用程序崩溃,我得到的错误是这样的:
java.lang.IndexOutOfBoundsException: Index: 10, Size: 10
我在谷歌上搜索了很多但没有得到任何解决方案..
这是我加载更多帖子的代码
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
isScrolling = true;
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
currentItems = mLayoutManager.getChildCount();
totalItems = mLayoutManager.getItemCount();
scrolledItems = mLayoutManager.findFirstVisibleItemPosition();
if (isScrolling = (currentItems + scrolledItems == totalItems)) {
isScrolling = false;
yourURL = "https://punjabidharti.com/wp-json/wp/v2/posts/?categories=4514&per_page=10" + "&page=" + pageNo++;
progressBar.setVisibility(View.VISIBLE);
if (mListPost != null) {
getRetrofit();
} else {
progressBar.setVisibility(View.GONE);
}
}
}
});
这是获取帖子的代码..
call.enqueue(new Callback<List<WPPost>>() {
@Override
public void onResponse(Call<List<WPPost>> call, Response<List<WPPost>> response) {
Log.e("mainactivyt", " response "+ response.body());
mListPost = response.body();
progressBar.setVisibility(View.GONE);
for (int i = 0; i < response.body().size(); i++) {
Log.e("main ", " title " + response.body().get(i).getTitle().getRendered() + " " +
response.body().get(i).getId());
String tempdetails = response.body().get(i).getExcerpt().getRendered().toString();
tempdetails = tempdetails.replace("<p>", "");
tempdetails = tempdetails.replace("</p>", "");
tempdetails = tempdetails.replace("[…]", "");
list.add(new Model(Model.IMAGE_TYPE, response.body().get(i).getTitle().getRendered(),
tempdetails,
response.body().get(i).getLinks().getWpFeaturedmedia().get(0).getHref()));
}
adapter.notifyDataSetChanged();
}
@Override
public void onFailure(Call<List<WPPost>> call, Throwable t) {
}
});
这是适配器中的 onclick 方法
private ArrayList<Model> dataset;
private Context mContext;
public RecyclerViewAdapter(ArrayList<Model> mlist, Context context) {
this.dataset = mlist;
this.mContext = context;
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
final Model object = dataset.get(position);
( (ImageTypeViewHolder) holder).title.setText(object.title);
( (ImageTypeViewHolder) holder).subtitle.setText(object.subtitle);
( (ImageTypeViewHolder) holder).title.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent (mContext, PostDetails.class);
intent.putExtra ("itemPosition", position);
mContext.startActivity(intent);
}
});
( (ImageTypeViewHolder) holder).subtitle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent (mContext, PostDetails.class);
intent.putExtra ("itemPosition", position);
mContext.startActivity(intent);
}
});
@Override
public int getItemCount() {
return dataset.size();
}
}
请帮忙 ....
解决方案
推荐阅读
- node.js - 有没有办法从后端在 Dialogflow 中创建启用的知识库?
- django - 无法将模型表单数据保存在数据库中。给出 patientmedinfo.errors = none 和 patientmedinfo.is_valid() = false
- python - 将 Python Thrift 客户端与 Go gRPC 服务器接口
- r - 将参数传递给从 R 中的字符串调用的用户定义函数的最佳方法是什么?
- xamarin.android - AltBeacon DidEnterRegion 未触发
- c# - 如何使用 c# 代码将 Build Action 的 resx 文件属性转换为 Content?
- xcode - 如何使用xcode调试webrtc osx项目
- ios - 如何向 SwiftUI 项目添加额外的平台
- c - 如何在不使用 sprintf 的情况下在 C 中连接字符串和 int?
- azure - 通过 azure bastion 连接我的 azure vm 时出错