问题描述
我是应用程序开发人员的新手,想使用 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,position);
mContext.startActivity(intent);
}
});
@Override
public int getItemCount() {
return dataset.size();
}
}
请帮忙....
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)