尝试两次调用getItemCount()时无法访问的语句

时间:2018-08-01 16:11:52

标签: java android

我尝试两次致电getItemCount(),但收到一条无法到达的声明。任何想法如何返回两个计数而不会出现以下问题?

enter image description here

2 个答案:

答案 0 :(得分:2)

每个方法只能有一个return语句。您要么需要两个单独的方法来返回单独的值,要么将这些值放入数据结构中并返回数据结构

因此您可以执行以下操作:

public int getDataSourceCount() {
   return mDataSource.size();
}
public int getImageCount() {
   return mImageURL.size();
}

答案 1 :(得分:1)

getItemCount()方法是适配器确定要显示给用户的项目(行)的方式。绝对要求您从此方法中仅返回一个int值,并且该值是您希望用户能够看到的项目数。

鉴于您的原始问题表明您正在使用两个列表,因此您似乎应该执行以下两项操作之一:

1-返回两个大小的总和

也许您想说的是,recyclerview应该显示所有数据源项目,然后显示所有图像项目。在这种情况下,您要写

@Override
public int getItemCount() {
    return mDataSource.size() + mImageUrls.size();
}

2-返回mDataSource的大小

通常情况是,您有多个大小相同的列表 ,每个列表仅包含要向用户显示的每一行数据的一部分。也许mDataSource是20张专辑的列表,包括艺术家,歌曲名称等。也许mImageUrls是20张字符串的列表,每一个都是专辑封面的艺术。

在这种情况下,您可以只返回这些列表中任何一个的大小(因为它们都相等):

@Override
public int getItemCount() {
    return mDataSource.size();
}

然后,在您的onBindViewHolder()方法中,您可以从每个列表中拉出所需的数据:

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    Object albumInfo = mDataSource.get(position);
    String albumCoverUrl = mImageUrls.get(position);
    ...
}