0

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();

    }
4

2 に答える 2

1

見た目は問題ありませんが、(strings.length <= 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);
            }
于 2013-01-22T18:26:14.690 に答える
-1

onCreate() の前に定義されているとはどういう意味ですか。onCreate() の前に定義しても、onCreate() の前に呼び出されるわけではありません。アクティビティが onCreate() で開始するときに、上記のコードを呼び出す必要があります。

于 2013-01-22T18:11:55.947 に答える