Как скрыть ListView, пока строка не будет введена в SearchView - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь скрыть свой ListView до тех пор, пока в SearchView не будет введена строка.

Я довольно новичок в Java, но я пробовал прослушивать текст и даже идти на компромисс с методом нажатия, но я не могу 'Кажется, он работает.

package com.example.searchfunction;

    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.ListView;
    import android.widget.SearchView;
    import java.util.ArrayList;
    import android.os.Bundle;

public class MainActivity extends AppCompatActivity implements SearchView.OnQueryTextListener {

    // Declare Variables
    ListView list;
    ListViewAdapter adapter;
    SearchView editsearch;
    String[] animalNameList;
    ArrayList<AnimalNames> arraylist = new ArrayList<AnimalNames>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Generate sample data
        animalNameList = new String[]{"Lion", "Tiger", "Dog",
                "Cat", "Tortoise", "Rat", "Elephant", "Fox",
                "Cow","Donkey","Monkey"};

        // Locate the ListView in listview_main.xml
        list = findViewById(R.id.listview);

        for (int i = 0; i < animalNameList.length; i++) {
            AnimalNames animalNames = new AnimalNames(animalNameList[i]);
            // Binds all strings into an array
            arraylist.add(animalNames);
        }

        // Pass results to ListViewAdapter Class
        adapter = new ListViewAdapter(this, arraylist);

        // Binds the Adapter to the ListView
        list.setAdapter(adapter);

        // Locate the EditText in listview_main.xml
        editsearch = (SearchView) findViewById(R.id.search);
        editsearch.setOnQueryTextListener(this);
    }

    @Override
    public boolean onQueryTextSubmit(String query) {

        return false;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        String text = newText;
        adapter.filter(text);
        return false;
    }
}

1 Ответ

0 голосов
/ 09 ноября 2019

вернуть true в методе, который должен работать


@Override
public boolean onQueryTextChange(String newText) {
    String text = newText;
    adapter.filter(text);
    if(TextUtils.isEmpty(text)){
        list.setVisibility(View.GONE);
    }
    else {
        list.setVisibility(View.VISIBLE);
    }
    return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...