我有一个用于搜索的recyclerview,我想将我的所有项目添加到其中。我有
5个型号
我写的数据。
这个代码到目前为止,但它只显示前2项仅显示前2项请告诉我出了什么问题?
我的recyclerView代码适配器:
@Override
public int getItemViewType(int position) {
if (models.getEvents().size() >= position && position >= 0){
code = 0;
}else if (position > models.getEvents().size() && position <= (models.getEvents().size()+models.getNews().size())){
code = 1;
}else if (position > (models.getNews().size()+models.getEvents().size()) && position <=
(models.getEvents().size()+models.getNews().size()+models.getMemes().size())){
code =2;
}else if (position >(models.getEvents().size()+models.getNews().size()+models.getMemes().size())
&& position <= (models.getNews().size()+models.getEvents().size()+models.getMemes().size()+models.getExSites().size())){
code = 3;
}else if (position >(models.getNews().size()+models.getEvents().size()+models.getMemes().size()+models.getExSites().size()) &&position <=
(models.getNews().size()+models.getEvents().size()+models.getMemes().size()+models.getExSites().size()+models.getTwitch().size())){
code =4;
}
return code;
}
@Override
public SearchViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType){
case 0:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.events_layout,parent,false);
return new SearchViewHolder(view);
case 1:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.news_layout,parent,false);
return new SearchViewHolder(view);
case 2:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.last_world_memes_list_item,parent,false);
return new SearchViewHolder(view);
case 3:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.last_url_view,parent,false);
return new SearchViewHolder(view);
case 5:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.twitch,parent,false);
return new SearchViewHolder(view);
}
return new SearchViewHolder(view);
}
这里是我的绑定视图
@Override
public void onBindViewHolder(SearchViewHolder holder, final int position) {
switch (holder.getItemViewType()){
case 0:
Events event = models.getEvents().get(position);
do works
return;
case 1:
final LastWorldMemes mNews = models.getNews().get(position-(models.getEvents().size()));
do works
return;
case 2:
LastWorldMemes memes = models.getMemes().get(position-(models.getEvents().size()+models.getNews().size()));
do works
return;
case 3:
do works
return;
case 4:
}
}
问题是在recyclerview上获取itemCount这是我的代码,下面是错误
int size =( models.getEvents().size()+models.getNews().size()+models.getTwitch().size()
+models.getExSites().size()+models.getMemes().size());
@Override
public int getItemCount() {
return size;
}
这就是错误所在
02-19 18:27:38.216 14902-14902/app.mma.introsliderproject E/UncaughtException: java.lang.IndexOutOfBoundsException: Index: 8, Size: 8
at java.util.ArrayList.get(ArrayList.java:411)
at app.mma.PokerInfo.search.SearchAdapter.onBindViewHolder(SearchAdapter.java:109)
at app.mma.PokerInfo.search.SearchAdapter.onBindViewHolder(SearchAdapter.java:35)