android - 将txt文件中的行读入listview
问题描述
我想从 txt 文件中读取行并将每一行显示为列表视图中的项目我已经尝试了几种方法但对我来说没有任何效果是我的代码:
private var fileDir:File?=null
private var items: ArrayList<String>? = null
private var itemsAdapter: ArrayAdapter<String>? = null
private var listVIL: ListView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_todo1)
//create file txt if not exist
fileDir = File(Environment.getExternalStorageDirectory(), "todo.txt")
if (!fileDir!!.exists()) {
fileDir?.createNewFile()
}
//read items from the file
readFromFile()
listVIL = findViewById(R.id.listVI)
items = ArrayList()
itemsAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)
listVIL?.adapter=itemsAdapter
}
我尝试了此功能,但遗漏了一些东西,列表视图中没有显示任何内容,尽管没有引发异常
fun readFromFile() {
try {
var br = BufferedReader(InputStreamReader(FileInputStream(fileDir)))
items?.addAll(br.readLines())
br.close()
}
catch (e:Exception){
Toast.makeText(applicationContext,e.toString(),Toast.LENGTH_LONG).show()
}
}
在这里我尝试了另一种方法但没有工作
fun readFromFile() {
try {
var br = BufferedReader(InputStreamReader(FileInputStream(fileDir)))
var hasNextLine = true
while (hasNextLine) {
var line = br.readLine()
items?.add(line)
hasNextLine = line != null
}
listVIL?.adapter = itemsAdapter
br.close()
itemsAdapter?.notifyDataSetChanged()
}
catch (e:Exception){
Toast.makeText(applicationContext,e.toString(),Toast.LENGTH_LONG).show()
}
}
解决方案
readFromFile()
之后马上移动items = ArrayList()
推荐阅读
- javascript - 从 react-router 获取 url 参数并在组件中使用
- c++ - C++:使用在另一个库中定义的模板类创建服务功能库
- javascript - css背景自动变化动画
- powershell - TFS 构建通过 REST API 和 PowerShell 发布测试结果 TRX
- php - 如何在没有通知和警告的情况下从 /wp-admin 注销当前用户?
- node.js - 发送不是函数 discord.js v12
- java - 我不明白这个 java 继承示例
- charts - 是否可以使用 Chart js 或哪个图表库可以提供这种类型的图表?
- c++ - 如何在 std 命名空间中引入结构
- mysql - 让Mysql部分容忍