从原始文件在ListView中显示数据

时间:2013-01-22 17:59:04

标签: android android-listview

我需要从位于res / raw / file.txt下的txt文件中读取数据,并在ListView中显示每一行。但是当应用程序启动时,ListView为空。 这是在onCreate:

之前定义的
private SimpleAdapter sa;
ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();

这是代码:

     InputStream inputStream = getResources().openRawResource(R.raw.definitions);
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    String line;
    try 
    {
        HashMap<String, String> item;
        while ((line = reader.readLine()) != null) 
        {
            String[] strings = TextUtils.split(line, "-");
            if (strings.length < 2) 
            {
                item = new HashMap<String, String>();
                item.put("line1", strings[0].trim());
                item.put("line2", strings[1].trim());
                list.add(item);
            }
        }
        mTextView.setText("");

        sa = new SimpleAdapter(this, list,
                R.layout.result,
                new String[] { "line1","line2" },
                new int[] {R.id.word, R.id.definition});

        mListView.setAdapter(sa);

        reader.close();


    } 
    catch(Exception e)
    {
        Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();

    }

2 个答案:

答案 0 :(得分:1)

它看起来很好但是如果(strings.length &lt; = 2)有一个小的逻辑变化。它适用于我。

尝试

            if (strings.length <= 2) {
                item = new HashMap<String, String>();
                item.put("line1", strings[0].trim());
                item.put("line2", strings[1].trim());
                list.add(item);
            }

答案 1 :(得分:-1)

在onCreate()之前定义的是什么意思。在onCreate()之前定义并不意味着它将在onCreate()之前调用。当活动在onCreate()中开始时,您需要调用上面的代码。