首页 > 解决方案 > 带有 SearchView 的 Android ListView,过滤后的搜索结果不会指向正确的意图

问题描述

首先,我是一个初学者,所以请在这里稍等片刻。

我正在尝试创建一个包含项目列表的应用程序。当您单击该项目时,您将转到一个新的相应活动。当我添加一个 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;
    }

}

标签: androidlistviewpositionsearchviewonitemclicklistener

解决方案


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
}

重复此操作以获取您想要多少不同的活动。


推荐阅读