首页 > 解决方案 > 将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()
    }
}

标签: androidlistviewkotlin

解决方案


readFromFile()之后马上移动items = ArrayList()


推荐阅读