热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用ListView浏览安卓系统中的回收站文件

用 ListView 查看安卓回收原文:https://www . geeksforgeeks . org/view-带 lis

用 ListView 查看安卓回收

原文:https://www . geeksforgeeks . org/view-带 listview 的安卓回收/

内存管理是应用开发的一个至关重要的方面。由于移动设备的内存非常有限,因此在我们的应用中有必要谨慎使用。这样做的最佳实践之一是“查看回收”。

本文是关于安卓中的视图回收,然后创建了一个简单的应用程序,它使用【ListView】ArrayAdapter 来实现视图回收的实践。

安卓中视图回收的需求
通过回收未使用的视图来显示新内容,而不是为相同的视图创建新的视图,从而尽可能少地使用内存,这是一种惯例。假设,我们正在向下滚动一千个单词的列表。如果我们为每个单词创建一个 文本视图 ,我们将为此需要一千个文本视图。这将浪费大量内存,因为我们设备的屏幕一次只显示 7-8 个文本视图,如果我们想看到其余的文本视图,我们需要向下滚动。

当我们向下滚动时,位于顶部的文本视图不再可见。因此,可以推断当用户向下滚动列表视图时,顶部的文本视图没有被用户使用。因此,未使用的文本视图被回收,并在用户向下滚动时在底部使用。这样,我们的任务就可以只用其中的几个就能完成,而不是有一千个文本视图

安卓中查看回收的例子
最常见的例子之一就是我们手机的电话簿。我们的手机上可以有许多联系人,但我们的手机不会为每个联系人创建新的文本视图,而是回收未使用的向上/向下滚动的视图,并用新的联系人信息填充它们,并在用户向上/向下滚动时再次显示。

使用 ArrayAdapter 和 Listview 实现视图回收


  • ArrayAdapter 是从 BaseAdapter 类扩展而来的一个 Java 公共类。ArrayAdapter 对象使数据(要显示的数据)适应数组。基本上,适配器是用户界面组件和数据之间的桥梁,有助于填充用户界面组件中的数据。

  • ListView 是从ablistview扩展而来的一个 Java 公共类。列表视图是一种将几个项目分组并在垂直列表中显示的视图。如果提供的数据量无法在屏幕上显示,该列表也会自动滚动。

  • ArrayAdapter and ListView are required for view recycling. ListView asks for views from ArrayAdpapter by sending it a request and a specified position. ArrayAdpapter then returns the view at the specified position as the ListView keeps on asking for it until the device’s screen is filled. Now, when the user scrolls down, ListView gives ArrayAdpapter the top views which aren’t displayed on the device’s screen anymore. The ArrayAdpapter then erases the previous data of that ScrapView and sets new data and returns it to the ListView instead of creating a new view!


下面是一个演示内存管理实践的简单应用程序。


  • Step 1: Add the below code in activity_main.xml file which would just contain a ListView and a TextView.

    activity_main.xml

    ```java

        ListView
            android:id="@+id/list"
            android:orientation="vertical"
            android:layout_
            android:layout_/
    ```

    输出:


  • Step 2: In the below code, when we initialize the ArrayAdapter, we pass a layout called android.R.layout.simple_list_item_1 along with our ArrayList and Context. The android.R.layout.simple_list_item_1 is a inbuilt layout that describes the design in which a single list item will be shown. It conventionally consists of just a single TextView
    Once the ListView and ArrayAdapter are initialized, set the ArrayAdapter on the ListView using the setAdapter() method.

    MainActivity.java

    ```java
    package com.example.gfgrecycleview;

    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;

    import java.util.ArrayList;

    public class MainActivity
        extends AppCompatActivity {

    public static final
            String LOG_TAG
            = MainActivity.class
                  .getName();

    @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

    // Create a list of study fields.
            ArrayList stuff = new ArrayList<>();
            stuff.add("Data Structures");
            stuff.add("Algorithms");
            stuff.add("Competitive Programming");
            stuff.add("Interview Questions");
            stuff.add("Python");
            stuff.add("Java");
            stuff.add("Designing");
            stuff.add("Coding");
            stuff.add("Developing");
            stuff.add("Project Ideas");
            stuff.add("C++");
            stuff.add("Basically Everything!");

    // Find a reference to the
            //{@link ListView} in the layout
            ListView itemListView
                = (ListView)findViewById(R.id.list);

    // Create a new {@link ArrayAdapter}
            // of study fields
            ArrayAdapter adapter
                = new ArrayAdapter(
                    this,
                    android.R.layout.simple_list_item_1,
                    stuff);

    // Set the adapter
            // on the {@link ListView}
            // so the list can be populated
            /// in the user interface
            itemListView.setAdapter(adapter);
        }
    }
    ```

    输出:

    https://media.geeksforgeeks.org/wp-content/uploads/20200608114433/Android-Emulator-Nexus_4_API_23_5556-2020-06-08-11-10-27_Trim.mp4



推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • Java 中 Writer flush()方法,示例 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
author-avatar
Lv嘉文_246
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有