Search code examples
javaandroidandroid-studioandroid-listview

Set all items to a listview from a file .txt (ArrayList) what contains textview value [Android Java]


I want after a button onClick generate1() show all items from my Arraylist(.txt) contains Edittext value.

I am a beginner in android java programming.

This is my onClick Method generate1():

    public void generate1(View view) throws IOException {

        ArrayAdapter<String> adapter;
        ArrayList<String> ls = new ArrayList<>();
        EditText editText = (EditText) findViewById(R.id.editText);

        BufferedReader br = null;

        br = new BufferedReader(new InputStreamReader(getAssets().open("themen.txt")));
        String word;
        while ((word = br.readLine()) != null) {
            ls.add(word);
        }
        br.close();
        ListView listView = (ListView) findViewById(R.id.listView);
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,ls);
        listView.setAdapter(adapter);

        for (String e : ls){
           if (e.toLowerCase().contains(editText.getText().toString())){
              //???? some toDO ???? (if i do here System.out.println(e); its work, but i want the Items to a listview!! 
           }
        }
    }

Solution

  • you should create two global ArrayList .first you named 'ls' for all results.second i call 'lsFiltered' for filtered results; then...

    change this

    for (String e : ls){
           if (e.toLowerCase().contains(editText.getText().toString())){
              //???? some toDO ???? (if i do here System.out.println(e); its work, but i want the Items to a listview!! 
           }
        }
    

    to this

    for (int i = 0; i <ls.size() ; i++) {
            if (e.toLowerCase().contains(editText.getText().toString())){
                lsFiltered.add(ls.get(i));
            }
    }
    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,lsFiltered);
    listView.setAdapter(adapter);