Чтение текстового файла в Android Studio - PullRequest
0 голосов
/ 22 марта 2019

Я новичок в программировании на Android и пытался прочитать данные из текстового файла в Android Studio и использовать его для создания ListView с настраиваемой панелью поиска.Каждый раз, когда я пытаюсь прочитать файл, он выдает ошибку OutOfMemory, а также FileNotFound.Есть ли в Android Studio возможность чтения текстового файла длиной около 5000 строк, и есть ли конкретное место, где мне нужно хранить текстовый файл, чтобы он мог правильно его прочитать?Спасибо

Это мой текущий основной класс Java:

package com.example.myfirstapp;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import java.util.*;

public class ListViewSearchExample extends Activity {
    private ListView lv;
    private EditText et;
    private String listview_array[] = new String[]{"one", "two"};
    private ArrayList<String> array_sort = new ArrayList<String>();
    int textlength = 0;


    public void setArr(){
        StringBuilder sb = new StringBuilder();
        String temp = "";
        AssetManager am = this.getContext().getAssets();

        try {
            InputStream is = am.open(path);
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader()Reader("Text"));
            while (true) {
                temp = br.readLine();
                Log.d("Main", temp);
                if (temp.equals("end now pls")) break;
                sb.append(temp);
            }
        }
        catch(IOException e){
            e.printStackTrace();
        }
        StringTokenizer inFile = new StringTokenizer(sb.substring(0), "Title: ");
        listview_array = new String[1030];
        for(int i = 0; i < 1030; i++){
            if(inFile.hasMoreTokens()) listview_array[i] = inFile.nextToken();
        }
    }


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setArr();
        lv = (ListView) findViewById(R.id.ListView01);
        et = (EditText) findViewById(R.id.EditText01);
        lv.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, listview_array));

        et.addTextChangedListener(new TextWatcher() {
            public void afterTextChanged(Editable s) {
                // Abstract Method of TextWatcher Interface.
            }

            public void beforeTextChanged(CharSequence s,
                                          int start, int count, int after) {
// Abstract Method of TextWatcher Interface.
            }

            public void onTextChanged(CharSequence s,
                                      int start, int before, int count) {
                textlength = et.getText().length();
                array_sort.clear();
                for (int i = 0; i < listview_array.length; i++) {
                    if (textlength <= listview_array[i].length()) {
                        if (et.getText().toString().equalsIgnoreCase(
                                (String)
                                        listview_array[i].subSequence(0,
                                                textlength))) {
                            array_sort.add(listview_array[i]);
                        }
                    }
                }
                lv.setAdapter(new ArrayAdapter<String>
                        (ListViewSearchExample.this,
                                android.R.layout.simple_list_item_1, array_sort));
            }
        });
    }
}
...