首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

已将来自places/photo api获取的项目添加到回收器视图,但该视图为空

基础概念

回收器视图(RecyclerView)是Android开发中用于显示大量数据集的高效列表控件。它通过重用已有的视图来减少内存消耗和提高性能。Places API是Google提供的一个服务,用于获取地点信息,包括照片。

相关优势

  • 高效性:RecyclerView通过视图重用机制,减少了创建和销毁视图的开销。
  • 灵活性:支持多种布局管理器,如线性布局、网格布局等。
  • 可扩展性:可以自定义适配器和视图持有者,以适应不同的数据展示需求。

类型

  • 线性布局管理器:按垂直或水平方向排列项目。
  • 网格布局管理器:将项目排列成网格状。
  • 瀑布流布局管理器:类似Pinterest的布局,项目按列排列,每列高度不同。

应用场景

  • 列表展示:如新闻列表、商品列表等。
  • 网格展示:如图片墙、应用图标展示等。
  • 瀑布流展示:如社交应用中的动态展示。

可能的问题及原因

  1. 数据未正确加载:可能是网络请求失败或数据解析错误。
  2. 适配器未正确设置:适配器未绑定到RecyclerView,或适配器中的数据为空。
  3. 布局管理器未设置:RecyclerView没有设置合适的布局管理器。
  4. 视图持有者未正确实现:自定义的视图持有者(ViewHolder)未正确实现。

解决方法

以下是一个简单的示例代码,展示如何正确设置RecyclerView并显示来自Places API的照片:

代码语言:txt
复制
// 创建布局管理器
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);

// 创建适配器
PhotoAdapter adapter = new PhotoAdapter(photoList);
recyclerView.setAdapter(adapter);

// 加载数据
loadPhotosFromPlacesAPI();

private void loadPhotosFromPlacesAPI() {
    // 模拟从Places API获取数据
    List<Photo> photoList = new ArrayList<>();
    // 假设已经获取到了photoList数据

    // 更新适配器数据
    adapter.setPhotoList(photoList);
    adapter.notifyDataSetChanged();
}

// 适配器类
public class PhotoAdapter extends RecyclerView.Adapter<PhotoAdapter.PhotoViewHolder> {
    private List<Photo> photoList;

    public PhotoAdapter(List<Photo> photoList) {
        this.photoList = photoList;
    }

    public void setPhotoList(List<Photo> photoList) {
        this.photoList = photoList;
    }

    @NonNull
    @Override
    public PhotoViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_photo, parent, false);
        return new PhotoViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull PhotoViewHolder holder, int position) {
        Photo photo = photoList.get(position);
        // 设置图片
        Glide.with(holder.itemView.getContext()).load(photo.getUrl()).into(holder.photoImageView);
    }

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

    static class PhotoViewHolder extends RecyclerView.ViewHolder {
        ImageView photoImageView;

        PhotoViewHolder(View itemView) {
            super(itemView);
            photoImageView = itemView.findViewById(R.id.photoImageView);
        }
    }
}

参考链接

通过以上步骤,可以确保RecyclerView正确显示来自Places API的照片。如果问题仍然存在,请检查网络请求和数据解析部分,确保数据能够正确加载和传递到适配器中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android开发笔记(一百八十一)使用CameraX拍照

CameraX基于camera2开发,它提供一致且易用API接口,还解决了设备兼容性问题,从而减少了编码工作量。...1、准备一个预览视图对象PreviewView,并添加至当前界面; 2、获取相机提供对象ProcessCameraProvider; 3、构建预览对象Preview,指定预览宽高比例; 4、构建摄像头选择对象...bindToLifecycle方法,把相机选择、预览视图、图像捕捉绑定到相机提供; 7、调用预览视图对象setSurfaceProvider方法,设置预览视图表面提供; 把上述初始化步骤串起来...ViewGroup.LayoutParams.MATCH_PARENT); mCameraPreview.setLayoutParams(params); addView(mCameraPreview); // 把预览视图添加到界面上...,其中第一张图为准备拍照时预览界面,第二张图为拍照结束后观赏界面。

1.7K20

drf序列化之反序列化数据验证

使用序列化进行反序列化时,需要对数据进行验证后,才能获取验证成功数据或保存成模型类对象。...在获取反序列化客户端数据前,必须在视图中调用序列化对象is_valid()方法,序列化内部是在is_valid方法内部调用验证选项和验证方法进行验证,验证成功返回True,否则返回False。...验证失败,可以通过序列化对象errors属性获取错误信息,返回字典,包含了字段和字段错误提示。...,需要对来自客户端数据进行处理,例如,验证和保存到数据库中。...表明字段是否允许传入None,默认False validators 字段使用验证 error_messages 包含错误编号与错误信息字典 label 用于HTML展示API页面时,显示字段名称

2.1K30
  • 2018 COCO 竞赛中国团队包揽所有冠军,旷 4 项第一!

    其中,旷获得了4项冠军(含1项并列第一),来自北邮和滴滴团队分别获得1项冠军。微软亚洲研究院获得1项亚军,北京大学和360组成团队也获得了1项亚军。...全景分割需处理物体类和事件类,统一了两种典型语义和实例分割任务。“全景”(panoptic)定义是指 “包括一个视图中可见所有内容”,即一个统一、全局分割视图。...包括北美和南美、欧洲、非洲、亚洲和大洋洲 非常多样天气条件(阳光、雨、雪、雾、雾)和捕获时间(黎明、白天、黄昏、夜晚) 广泛相机传感,不同焦距,图像宽高比和不同类型相机噪音 不同捕捉视角(道路...在侧重对物体理解传统4大任务中: 物体检测(边界框 BBox):旷研究院团队第一,港中文&北大团队 UCenter 第二,微软亚洲研究院(MSRA)团队与来自 FAIR 团队分别获得第三、第四...根据 Workshop 官方介绍,在 Places 环节受邀发表演讲的是来自谷歌(G-RMI)、今日头条(WinterIsComing,ByteDance)和中科院自动化所与京东合作团队(CASIA_IVA_JD

    78861

    《Android编程权威指南》之UI fragment与fragment管理

    一、UI设计灵活性需求 理论上应用会由两个页面组成,一个负责管理记录列表界面,另一个负责管理记录明细界面。...一些新Android Jetpack API,比如导航控制(navigation controller),就能完美地支持fragment。...CriminalIntent 当然就是创建新项目,创建需要各种类。...fragment是在API 11级系统版本中引入,为了支持老设备,一个兼容版Fragment实现被添加到v4支持库版本中,Android 9.0(API 28)发布后,系统框架版 fragment...创建fragment类并设置其视图为第一步定义布局 然后就照着编写 CrimeFragment 代码,新建 Crime 实例。拿到控件,给控件添加监听什么

    50820

    Autodesk Revit 2024 中文正式版下载(附激活+教程)

    随着条件格式被添加到族和类型关键明细表中,明细表也在不断完善,这是来自Revit社区一项增强功能.您还将发现新功能来控制替换元素显示和标记,使复杂注释更加清晰。...直接从绘图区域打开图纸现在,可以直接从视图绘图区域快捷菜单打开图纸。放置多个视图和明细表通过从项目浏览拖动多个视图和明细表或从“选择视图”对话框中选择多个项目,可以同时将它们放置在图纸上。...REVIT-197392已将风管、管道、线管、电缆桥架、MEP 预制风管系统、MEP 预制管道系统和 MEP 预制电缆桥架标高参数添加到可见性过滤器中可用参数列表中。...REVIT-187625项目浏览在新 Web 项目浏览中,添加了对常规功能支持。REVIT-186807“属性”对话框将“属性”选项板和类型编辑中显示项目参数修改为按字母排序。...REVIT-183550视图为 Revit API 添加了新枚举类型 BackClippingParam,枚举类型可以与 VIEW_BACK_CLIPPING 和 VIEWER_BOUND_FAR_CLIPPING

    7.7K20

    django之文件上传下载等相关

    然后给这个handle_upload_file函数传递一个“request.FILES[‘file’]”,就是我们获取文件;也可以从表单中获取到,比如使用form提供files或cleaned_data...如果是GET请求,就直接显示一个表单,让用户输入。 注意我们必须向表单构造中传递request.FILES,这是文件数据绑定到表单方法。...,如果这个文件非常大,这种方式会占用大量内存,甚至导致服务崩溃。...,已经完成了将服务文件,通过文件流传输到浏览文件流通常会以乱码形式显示到浏览中,而非下载到硬盘上,因此,还要在做点优化,让文件流写入硬盘。...,这里使用了request.FILES字典方式去获取文件,然后创建新数据,并保存到数据库中。

    3.1K30

    RenderingNG中关键数据结构及其角色

    (从上到下依次排列) 绘制视图view背景 :drawRect命令绘制大小为800x600(视图大小),颜色为白色区块 绘制#「blue」 背景: drawRect命令在「以视图为参照物」位置为(0...❝合成器帧是RenderingNG表示如何将栅格化内容「拼接」在一起,并使用GPU有效地绘制它数据格式 ❞ 瓦片Tile 理论上,渲染进程或浏览进程中合成器compositor可以「将像素栅格化为渲染单一纹理...然而,如果合成器想要「更新哪怕是一个像素」,它就需要对「整个口」进行重新光栅化处理,并向Viz提交一个新纹理。 相反,「口被划分为瓦片Tile」。...❝一个「单独」GPU纹理瓦片为每个瓦片提供了口部分光栅化像素 ❞ 然后,渲染可以更新单个瓦片,甚至只是改变现有瓦片在屏幕上位置。...❝「一个合成器帧也有可能嵌入另一个合成器帧」 ❞ 例如,浏览合成器会产生一个带有浏览器用户界面的合成器帧,以及一个「区域」以便于将渲染合成器内容嵌入其中。

    2K10

    RecyclerView 必知必会

    其中next()调用了getViewForPosition(currentPosition),方法是从RecyclerView回收机制实现类Recycler中获取合适View,在后文回收机制中会介绍方法具体实现...那么如何在不破坏原有Adapter实现情况下完成呢? 这里引入装饰(Decorator)设计模式,设计模式通过组合方式,在不破话原有类代码情况下,对原有类功能进行扩展。...添加setEmptyView ListView提供了setEmptyView()设置Adapter数据为View视图。RecyclerView虽然没提供直接API,但是也可以很简单地实现。...通过getRootView().addView(emptyView)将数据时显示View添加到当前View层次结构中。...回顾 回顾整篇文章,发现我们已经实现了RecyclerView很多扩展功能,包括:打造万能适配器、添加Item事件、添加头视图和尾视图、设置布局、侧滑拖拽。

    2.6K70

    开源图像风格迁移,快看看大画家潜力股

    图为原始内容图片,下图为风格图片,右图为生成效果图 特征派典型开源项目为neural-style, 该项目是论文“A Neural Algorithm of Artistic Style ”实现,...neural-style效果图 此外,还有deep-photo-styletransfer,该项目是其论文“Deep Photo Style Transfer ”实现。...deep-photo-styletransfer项目基于Torch和matlab 实现,要复现的话难度偏高。 ?...deep-photo-styletransfer效果图 “GAN派” 生成式对抗网络(GAN)中,生成器(Genarator)不断生成新图片以求骗过鉴别;鉴别(Discriminator)不断更新参数...伴随而来是一个突出问题:pix2pix 在训练时候,需要成对数据集,现实条件下从哪里来那么多成对训练集合呢? ?

    2.7K20

    Android入门教程 | Fragment 基础概念

    container 参数是片段布局将插入到父级 ViewGroup(来自 Activity 布局)。...(在本例中,此值为 false,因为系统已将扩展布局插入 container,而传递 true 值会在最终布局中创建一个多余视图组。) 接下来,需将该片段添加到 Activity 中。...宿主 Activity 已停止,或片段已从 Activity 中移除,添加到返回栈。已停止片段仍处于活动状态(系统会保留所有状态和成员信息)。...Fragment 如何实现类似 Activity 栈压栈和出栈效果 Fragment 事物管理内部维持了一个双向链表结构,结构可以记录我们每次 add Fragment 和 replace ...在该回调中我们可以将 context 转化为 Activity 保存下来,从而避免后期频繁调用getAtivity() 获取 Activity 局面,避免了在某些情况下 getAtivity() 为异常

    3.5K40

    用google map实现周边搜索功能

    项目要实现根据经纬度获取附近建筑,由于项目在海外运营,谷歌地图首当其冲。 首先说明是,功能需要在服务端实现,也就是安卓SDK不适用。...api文档地址: https://developers.google.com/places/web-service/search#PlaceSearchResults 获取秘钥key方法: https...://developers.google.com/places/web-service/get-api-key api文档地址打不开怎么办,我将文档中东西复制下来了,如下: 附近搜索请求 默认情况下...作为URL中标准,所有参数都使用ampersand( &)字符分隔。 必需参数 key- 您应用程序 API密钥。此密钥标识您应用程序。有关 更多信息,请参阅 获取密钥。...有关这些结果信息,请参见搜索结果 Places API establishment 每个查询最多返回20个结果。另外, political可以返回结果,其用于识别请求区域。

    3.6K10

    在线算命网站源码|算命小程序源码带uniapp

    "   ];   * 在某些时候你应该回来把你自己项目添加到数组中。...使用 JavaScript 从数组中获取随机项   要使用 JavaScript 从数组中获取随机项,请将以下代码添加到 JavaScript。   ...,它等于我们 fortunes 数组中随机项目的值。...它还将 randomFortune 值记录到控制台,以便我们检查它是否正常工作。 图片   因此,如果您还没有这样做,请保存您代码,在浏览中刷新您页面并检查浏览控制台。...* 请注意,我还在头部添加了一个元口标签。如果您想在移动设备上查看您页面,这是必须具备。   如果您现在运行应用程序,请注意如果您偶然获得相同财富,网站内容没有变化。

    3.5K62

    RecyclerView 必知必会

    其中next()调用了getViewForPosition(currentPosition),方法是从RecyclerView回收机制实现类Recycler中获取合适View,在后文回收机制中会介绍方法具体实现...那么如何在不破坏原有Adapter实现情况下完成呢? 这里引入装饰(Decorator)设计模式,设计模式通过组合方式,在不破话原有类代码情况下,对原有类功能进行扩展。...添加setEmptyView ListView提供了setEmptyView()设置Adapter数据为View视图。RecyclerView虽然没提供直接API,但是也可以很简单地实现。...通过getRootView().addView(emptyView)将数据时显示View添加到当前View层次结构中。...回顾 回顾整篇文章,发现我们已经实现了RecyclerView很多扩展功能,包括:打造万能适配器、添加Item事件、添加头视图和尾视图、设置布局、侧滑拖拽。

    4.2K90

    为虚幻引擎开发者准备Unity指南

    以下是 Unity 中重要视图及其在 Unreal 编辑对应视图。 2.1 Scene 视图口) Scene 视图是 Unity 口,可用于直观导航和编辑场景。...工具栏中央是播放、暂停和跳帧按钮,让你能够直接在编辑中测试游戏。位于 Scene 视图右上角场景视图辅助图标表示视图方向。...单击某个轴可让视图轴对齐,单击中心立方体可在正视图与透视图之间切换。...在 Unreal 中,当在编辑中启动游戏时,将在活动口中播放游戏。Unreal 拥有玩家 Pawn,口充当实际游戏视图。Unpossessing 让你可以在游戏运行期间编辑关卡。...如果用户想恢复已关闭选项卡,可以在这里找到它。 3.项目和资源 Unity 项目的设置方式与 Unreal 项目类似,资源管理方式存在重大差异。

    26810

    OpenCV3 安卓应用编程:1~6 全

    我们应该看到一个名为工作空间启动窗口,窗口要求我们选择一个工作区。 工作空间是一组相关 Eclipse 项目的根目录。 输入您选择任何位置。...选择最新 API 版本是安全,在撰写本文时,版本为 API 22:Android 5.1.1。...在这里,我们还将配置 OpenGL 透视图口(其在屏幕上绘制区域),因为ARCubeRenderer和CameraProjectionAdapter接口可能允许视角以逐帧方式改变。...尽管我们介绍了网格,变换和透视图还有许多其他主题我们根本没有涉及,例如照明,材料(逼真的表面)以及从 3D 艺术包中导入艺术家作品。...(finalize方法是从java.lang.Object继承,并在对象被垃圾回收时被调用。)当我们编写dispose实现时,我们还将覆盖finalize来调用dispose。

    5.3K10

    使用 AI 为 Web 网页增加无障碍功能

    对那时我来说,无障碍永远是“考虑考虑”事,直到有一天我收到了来自一个项目的用户邮件。 ?...im2txt 实例来自 im2txt Github Repository im2txt 技术细节: 这个模型机制相当精致,但是它基本上是一个“编码 - 解码方案。...图为此神经网络概况(图片来自 im2txt Github repository) 根据 Github 库中说明,这个模型在 Tesla k20m GPU 上训练时间大约为 1-2 周(在我笔记本标准...图为 AWS API Gateway + AWS = ❤️ (图片链接) 使用 Lambda 问题就在于,我必须要为 im2txt 模型创建一个 API。...上图为 API 提供图片可能内容概率 此外,Lambda 价格便宜令人惊讶。

    84810

    Flask表单之WTForms和flask-wtf

    可选 验证码 API 服务 RECAPTCHA_PARAMETERS 可选 一个 JavaScript(api.js)参数字典 RECAPTCHA_DATA_ATTRS 可选 一个数据属性项列表...你在一些字段中看到可选参数validators用于验证输入字段是否符合预期。DataRequired验证仅验证字段输入是否为。更多验证将会在未来表单中接触到。...默认情况下是用GET请求发送,几乎在所有情况下,使用POST请求会提供更好用户体验,因为这种类型请求可以在请求主体中提交表单数据, GET请求将表单字段添加到URL,会使浏览地址栏变得混乱。...运行应用,在浏览地址栏中输入http://localhost:5000/,然后点击顶部导航栏中“Login”链接来查看新登录表单。 是不是非常炫酷?...当浏览向服务提交表单数据时,通常会使用POST请求(实际上用GET请求也可以,这不是推荐做法)。之前“Method Not Allowed”错误正是由于视图函数还未配置允许POST请求。

    4K20

    JavaScript高级程序设计-性能整理(一)

    因为 JavaScript 可以使用 DOM API,所以通过向 DOM 中动态添加 script 元素同样可以加载指定脚本。只要创建一个 script 元素并将其添加到DOM 即可。...'; script.async = false; document.head.appendChild(script); 以这种方式获取资源对浏览预加载是不可见。...这个视图专为文件 I/O 和网络 I/O 设计,其API 支持对缓冲数据高度控制,相比于其他类型视图性能也差一些。DataView 对缓冲内容没有任何预设,也不能迭代。...这个实例可以使用全部或部分 ArrayBuffer,且维护着对缓冲实例引用,以及视图在缓冲中开始位置。...// byteOffset=0 表示视图从缓冲起点开始 // byteLength=8 限制视图为前 8 个字节 const firstHalfDataView = new DataView(buf,

    66620
    领券