IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android从txt类型文件读取信息,并用listview逐行显示 -> 正文阅读

[移动开发]Android从txt类型文件读取信息,并用listview逐行显示

本人做了项目,需要从外部文件(txt格式,如图1所示)读取设备信息,并能逐行显示在主界面。经过思考,大致思路是:先把txt文件导入到Android studio工程文件,然后利用代码读取文件并显示。网上搜了很多资料,大部分是从数据库读取数据,或者从sd卡读取的,本人经过摸索,找到了一种直接从工程读取文件的方法。

图1? txt文件内容

第一步:确定文件放置的位置

文件存放路径为res/raw/*.txt,注意如果res下无raw,那么需要手动建立一个文件夹,如图2所示。

图2 把devices文件放到res/raw/

第二步:设计主界面layout文件(activity_main.xml)

界面上设计一个button按钮(读取数据),一个listview(显示txt内容),如图3所示。


图3 主界面设计图

主界面layout设计的代码如代码1所示:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/btn_read"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginStart="0dp"
        android:layout_marginEnd="300dp"
        android:text="读取数据"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>
    <ListView
        android:id="@+id/lv_devices"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginBottom="30dp"
        android:layout_marginTop="60dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

代码1?activity_main.xml

第三步:新建listview填充内容布局

布局文件名称为:lv_devices_layout,如图4所示。填充内容为一列的textview,显示设备编码

图4? 新建lv_devices_layout.xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="5dp"
        android:layout_marginLeft="10dp">
        <TextView
            android:id="@+id/lv_devices_number"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp"
            android:layout_weight="1"
            android:textSize="18dp"
            android:gravity="center"
            />
</LinearLayout>

代码2?v_devices_layout.xml

第四步:编写MainActivity类

图5??MainActivity类

package com.example.myreadtext;
import androidx.appcompat.app.AppCompatActivity;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class MainActivity extends AppCompatActivity {
    ListView lv_devices;
    private List<Map<String,Object>> lists;
    private SimpleAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);//显示主界面
        final Resources res = super.getResources();//获取资源文件
        lv_devices= (ListView) findViewById(R.id.lv_devices);//将主界面上的listview与类lv_devices进行绑定
        Button btn_read = (Button) findViewById(R.id.btn_read);//将主界面上的button与类btn_read进行绑定
        btn_read.setOnClickListener(new View.OnClickListener(){//监听到btn_read单击时要进行的操作
            @Override
            public void onClick(View v) {
                InputStream input = res.openRawResource(R.raw.devices);	// 读取raw目录下txt文件devices
                Scanner scan = new Scanner(input);						// 实例化Scan
                lists = new ArrayList<>();                              //建立list数组,准备按行装载txt文件的内容
                String string_device;                                   //定义txt文件内的行字段变量

                while (scan.hasNext()) {								// 循环读取
                    Map<String,Object> map =new HashMap<>();            // 新建map类
                    string_device=scan.next();                          // 按行读取
                    map.put("theme",string_device);                     // 将数据存入到标题为"theme"的列中
                    lists.add(map);                                     // 将map中数据添加到lists中
                }

                // 利用adapter,将lists中标题为"theme"列数据导入到主界面activity_main中的listview中,其中listview用到的布局为lv_devices_layout
                adapter = new SimpleAdapter(MainActivity.this,lists,R.layout.lv_devices_layout
                        ,new String[]{"theme"}
                        ,new int[]{R.id.lv_devices_number});
                lv_devices.setAdapter(adapter);
                adapter.notifyDataSetChanged();
                scan.close();                      //关闭输入流
            }
        });
    }
}

代码3?MainActivity.class

第五步:测试结果

单击读取数据按钮前后的变化如图6,7所示。

?图6 单击“读取数据”按钮前

?图7?单击“读取数据”按钮后

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:51:06  更:2022-05-09 12:53:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 1:36:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码