Android实现读取SD卡下所有TXT文件名并用listView显示出来的方法

下面是实现读取SD卡下所有TXT文件名并用listView显示出来的方法的攻略:

  1. 确认权限

首先我们需要在AndroidManifest.xml中添加读取SD卡权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  1. 获取SD卡目录

获取SD卡的根目录路径:

String sdCardPath = Environment.getExternalStorageDirectory().getAbsolutePath();
  1. 遍历TXT文件

遍历SD卡下所有的TXT文件,获取文件名并添加到List中:

File sdCardFolder = new File(sdCardPath);
List<String> txtFileList = new ArrayList<>();
if (sdCardFolder.exists() && sdCardFolder.isDirectory()) {
    File[] files = sdCardFolder.listFiles();
    for (File file : files) {
        if (file.isFile() && file.getName().endsWith(".txt")) {
            txtFileList.add(file.getName());
        }
    }
}
  1. 绑定ListView

将txtFileList绑定到ListView上:

ListView listView = findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, txtFileList);
listView.setAdapter(adapter);

下面是完整的代码示例:

public class MainActivity extends AppCompatActivity {

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

        String sdCardPath = Environment.getExternalStorageDirectory().getAbsolutePath();
        File sdCardFolder = new File(sdCardPath);
        List<String> txtFileList = new ArrayList<>();
        if (sdCardFolder.exists() && sdCardFolder.isDirectory()) {
            File[] files = sdCardFolder.listFiles();
            for (File file : files) {
                if (file.isFile() && file.getName().endsWith(".txt")) {
                    txtFileList.add(file.getName());
                }
            }
        }

        ListView listView = findViewById(R.id.listView);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, txtFileList);
        listView.setAdapter(adapter);
    }
}

另外,可以参考以下两个示例:

  1. 按钮触发读取:
public class MainActivity extends AppCompatActivity {

    private List<String> txtFileList = new ArrayList<>();
    private ArrayAdapter<String> adapter;

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

        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, txtFileList);
        ListView listView = findViewById(R.id.listView);
        listView.setAdapter(adapter);

        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                readTxtFile();
            }
        });
    }

    private void readTxtFile() {
        String sdCardPath = Environment.getExternalStorageDirectory().getAbsolutePath();
        File sdCardFolder = new File(sdCardPath);
        if (sdCardFolder.exists() && sdCardFolder.isDirectory()) {
            File[] files = sdCardFolder.listFiles();
            txtFileList.clear();
            for (File file : files) {
                if (file.isFile() && file.getName().endsWith(".txt")) {
                    txtFileList.add(file.getName());
                }
            }
            adapter.notifyDataSetChanged();
        }
    }
}
  1. 添加文件长按事件:
public class MainActivity extends AppCompatActivity {

    private List<String> txtFileList = new ArrayList<>();
    private ArrayAdapter<String> adapter;

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

        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, txtFileList);
        ListView listView = findViewById(R.id.listView);
        listView.setAdapter(adapter);

        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                String fileName = txtFileList.get(position);
                deleteFileDialog(fileName);
                return true;
            }
        });

        readTxtFile();
    }

    private void readTxtFile() {
        String sdCardPath = Environment.getExternalStorageDirectory().getAbsolutePath();
        File sdCardFolder = new File(sdCardPath);
        if (sdCardFolder.exists() && sdCardFolder.isDirectory()) {
            File[] files = sdCardFolder.listFiles();
            txtFileList.clear();
            for (File file : files) {
                if (file.isFile() && file.getName().endsWith(".txt")) {
                    txtFileList.add(file.getName());
                }
            }
            adapter.notifyDataSetChanged();
        }
    }

    private void deleteFileDialog(final String fileName) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("删除文件");
        builder.setMessage("是否删除:" + fileName);
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String sdCardPath = Environment.getExternalStorageDirectory().getAbsolutePath();
                File file = new File(sdCardPath, fileName);
                if (file.exists()) {
                    file.delete();
                    readTxtFile();
                }
            }
        });
        builder.setNegativeButton("取消", null);
        builder.show();
    }
}

希望能够对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android实现读取SD卡下所有TXT文件名并用listView显示出来的方法 - Python技术站

(1)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Window7安装MariaDB数据库及系统初始化操作分析

    Window7安装MariaDB数据库及系统初始化操作分析 在Windows7操作系统上,安装MariaDB数据库并进行相关的系统初始化操作,主要可分为以下步骤: 步骤1:下载并安装MariaDB数据库 1.1 下载MariaDB数据库安装包 在MariaDB官网上下载MariaDB的Windows安装包,选择对应的版本、位数和版本号进行下载。 1.2 安装…

    other 2023年6月20日
    00
  • Access使用查询–1.1. 用选择查询建立计算字段

    讲解“Access使用查询–1.1. 用选择查询建立计算字段”完整攻略。 1. 什么是计算字段 在使用选择查询时,我们可以添加“计算字段”来构建不仅基于表原有列的查询内容,而是基于表中数据计算或特定条件下的数据展示,这就是计算字段。例如,我们可以使用计算字段计算商品售价与成本之间的利润率,并将查询结果按利润率从大到小排序。 2. 如何添加计算字段 在查询设…

    other 2023年6月25日
    00
  • C语言实现enum枚举

    当使用C语言编程时,可以使用enum关键字来定义枚举类型。枚举类型允许我们定义一组具有离散值的常量。下面是实现enum枚举的完整攻略: 首先,使用enum关键字定义一个枚举类型。枚举类型的名称应该是唯一的,并且按照C语言的命名规范进行命名。例如,我们可以定义一个表示颜色的枚举类型: enum Color { RED, GREEN, BLUE }; 在上面的示…

    other 2023年8月15日
    00
  • mysql5.7安装及配置教程

    MySQL5.7安装及配置教程 MySQL是一个免费的关系型数据库管理系统,是Web应用程序中使用最广泛的数据库之一。MySQL5.7是MySQL数据库的最新稳定版本,其性能和功能都得到了进一步的提升。在本教程中,我们将介绍如何在Linux系统上安装和配置MySQL5.7。 步骤1:安装MySQL5.7 要在Linux系统上安装MySQL5.7,请按照以下步…

    other 2023年6月27日
    00
  • windows 文件名太长怎么办?Windows关闭/开启短文件名功能的教程

    当Windows文件名太长时,会导致一些操作无法完成。这时可以尝试开启短文件名功能或者缩短文件名来解决问题。下面将详细介绍这两种解决方法。 问题原因及现象 当Windows文件名超过260个字符时,有些操作会因文件名太长而出现问题。出现这种情况的原因通常是由于文件夹目录结构复杂或文件名过长。 解决方法 解决这个问题的方法有两个: 开启短文件名功能 缩短文件名…

    other 2023年6月26日
    00
  • 浅谈vue加载优化策略

    浅谈Vue加载优化策略 在 Vue 中进行页面开发时,随着功能的增加,引入的代码也越来越多,这就会导致页面加载速度变慢,影响用户体验。因此,对 Vue 的加载优化具有重要意义。下面我们将从三个方面介绍 Vue 加载优化策略。 按需引入第三方组件库 在 Vue 项目中,如果我们使用的第三方组件库过于庞大,那么在项目中引用这个组件库的时候就会出现页面加载很慢的问…

    other 2023年6月27日
    00
  • key-value数据库

    key-value数据库的完整攻略 Key-value数据库是一种NoSQL数据库,它使用简单的键值对来存储和检索数据。本文将提供一个完整攻略,介绍key-value数据库的基概念、使用方法和示例。 基本概念 Key-value数据库是种NoSQL数据库,它使用简单的值对来存储和检索数据。每个键都是唯一的,对应一个值。键和值可以是任何类型的数据,包括字符串、…

    other 2023年5月8日
    00
  • Android TCP 文件客户端与服务器DEMO介绍

    下面我将详细讲解“Android TCP 文件客户端与服务器DEMO介绍”的完整攻略。 Android TCP 文件客户端与服务器DEMO介绍 简介 本DEMO主要演示了Android TCP文件传输的基本原理和使用方法,分为客户端和服务器端两部分。客户端主要负责选择文件、建立TCP连接、发送文件数据等操作;服务器端主要负责接收连接、接收并保存文件数据等操作…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部