Android ListView с SearchView, отфильтрованные результаты поиска не указывают на правильное намерение - PullRequest
1 голос
/ 03 февраля 2020

Прежде всего, я новичок, поэтому, пожалуйста, подождите немного здесь.

Я пытаюсь создать приложение со списком предметов. При нажатии на элемент вы go переходите к новой соответствующей активности. Когда я добавил SearchView для фильтрации элементов списка, теперь проблема с отфильтрованными результатами, при нажатии на которые они не указывают на соответствующее действие.

Можете ли вы исправить мой код ниже или предоставить лучший способ направить соответствующая деятельность. Пожалуйста, предоставьте как можно больше подробностей. Заранее большое спасибо.

MainActivity. java

public class MainActivity extends Activity
        implements SearchView.OnQueryTextListener {

    private SearchView mSearchView;
    private ListView mListView;

    private final String[] mStrings = { "Google", "Apple", "Samsung", "Sony", "LG", "HTC" };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().requestFeature(Window.FEATURE_ACTION_BAR);

        setContentView(R.layout.activity_main);

        mSearchView = findViewById(R.id.search_view);
        mListView = findViewById(R.id.list_view);
        mListView.setAdapter(new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1,
                mStrings));
        mListView.setTextFilterEnabled(true);
        setupSearchView();
        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if (position == 0) {
                    Intent i = new Intent(MainActivity.this, google.class);
                    startActivity(i);
                } else {
// code to direct to the corresponding activity                    
            }
        });
    }

    private void setupSearchView() {
        mSearchView.setIconifiedByDefault(false);
        mSearchView.setOnQueryTextListener(this);
        mSearchView.setSubmitButtonEnabled(true);
        mSearchView.setQueryHint("Search Here");
    }

    public boolean onQueryTextChange(String newText) {
        if (TextUtils.isEmpty(newText)) {
            mListView.clearTextFilter();
        } else {
            mListView.setFilterText(newText);
        }
        return true;
    }

    public boolean onQueryTextSubmit(String query) {
        return false;
    }

}

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Вот как я это сделал. Вместо того, чтобы проверять позицию элемента, которая изменяется, когда поиск фильтрует список, я проверяю значение String. Сработало

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String name = (String) mListView.getItemAtPosition(position);
                if (name == "Google") {
                    Intent i = new Intent(MainActivity.this, Google.class);
                    startActivity(i);
                } else {
// code to direct to the corresponding activity                    
            }
        });
0 голосов
/ 03 февраля 2020
if (position == 0) {
     Intent i = new Intent(MainActivity.this, google.class);
     startActivity(i);
} else if ( position == 1){
     // do something, sending to activity of choice
} else if ( position == 2){
     // do something , sending to activity of choice
}

Повторите это для любого количества различных действий, которые вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...