为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

忽然笑 2021-06-15 17:02:05
我试图打电话getItemCount()两次,但得到一个无法访问的声明。知道如何在不出现以下问题的情况下返回两个计数吗?
查看完整描述

2 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

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


所以你可以这样做:


public int getDataSourceCount() {

   return mDataSource.size();

}

public int getImageCount() {

   return mImageURL.size();

}


查看完整回答
反对 回复 2021-06-23
?
倚天杖

TA贡献1828条经验 获得超3个赞

该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);

    ...

}


查看完整回答
反对 回复 2021-06-23
  • 2 回答
  • 0 关注
  • 249 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信