我想在“回收站”视图中展示广告,但是我有两个列表,使用2个列表时出现错误; 我有**列出serverList **和**列出recycleItems **,我想展示广告,但是当我使用回收站视图的getItemCount()方法时却无法获取该视图。
java.lang.IndexOutOfBoundsException:无效的索引0,在java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)的大小为0 在java.util.ArrayList.get(ArrayList.java:308) 在com.mydata.adapter.ServerAdpter.onBindViewHolder(ServerAdpter.java:123)
public int getItemCount() {
Log.e("Serv+re", String.valueOf(recycleItems.size() + serverList.size()));
return recycleItems.size() + serverList.size();
}
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
int viewType = getItemViewType(position);
switch (viewType) {
case ITEM_data:
Server server = serverList.get(position);
ServerViewHolder v = (ServerViewHolder) holder;
v.bind(position, listener);
case ITEM_BANNER_AD:
default:
AdViewHolder bannerHolder = (AdViewHolder) holder;
AdView adView = (AdView) recycleItems.get(position); //show error in this line
ViewGroup adCardView = (ViewGroup) bannerHolder.itemView;
if (adCardView.getChildCount() > 0) {
adCardView.removeAllViews();
}
if (adView.getParent() != null) {
((ViewGroup) adView.getParent()).removeView(adView);
}
adCardView.addView(adView);
}
}
答案 0 :(得分:0)
您不能将回收站视图与两个列表一起使用,这是不正确的。 您可以使DisplayItem接口(例如)将所有项存储在一个列表中,并在您的类中实现此接口。
public interface DisplayItem
public class Ad implements DisplayItem {
// Ad properties
}
public class Info implements DisplayItem {
// Info properties
}
class YourAdapter extends RecyclerView.Adapter {
private List<DisplayItem> items;
// Your adapter code
}
您将使用此列表单独在适配器中工作。
在onBindViewHolder
方法中,您会将DisplayItem强制转换为所需的viewHolder类