我是应用程序开发人员的新手,想使用 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) {
}
});
这是adapter中的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();
}
}
请帮忙....