热门标签 | 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



推荐阅读
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • andr ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
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社区 版权所有