Android ListView与SearchView相比,过滤后的搜索结果并不直接指向正确的意图

Android ListView与SearchView相比,过滤后的搜索结果并不直接指向正确的意图,android,listview,position,searchview,onitemclicklistener,Android,Listview,Position,Searchview,Onitemclicklistener,首先,我是一个初学者,所以请在这里容忍我一会儿 我正在尝试创建一个包含项目列表的应用程序。当您单击该项目时,将转到新的相应活动。 当我添加一个SearchView来过滤列表项时,现在的问题是,单击时过滤的结果不会指向相应的活动 请您更正我下面的代码,或者提供更好的方式来指导相应的活动。请提供尽可能多的细节。事先非常感谢你 MainActivity.java public class MainActivity extends Activity implements SearchVi

首先,我是一个初学者,所以请在这里容忍我一会儿

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

}
公共类MainActivity扩展活动
实现SearchView.OnQueryTextListener{
私有搜索视图;
私有列表视图;
私有最终字符串[]mStrings={“谷歌”、“苹果”、“三星”、“索尼”、“LG”、“HTC”};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE\u ACTION\u栏);
setContentView(R.layout.activity_main);
mSearchView=findviewbyd(R.id.search\u视图);
mListView=findViewById(R.id.list\u视图);
mListView.setAdapter(新阵列适配器(此,
android.R.layout.simple\u list\u item\u 1,
mStrings);
mListView.setTextFilterEnabled(true);
setupSearchView();
mListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
如果(位置==0){
Intent i=新Intent(MainActivity.this,google.class);
星触觉(i);
}否则{
//指向相应活动的代码
}
});
}
私有void setupSearchView(){
mSearchView.setIconifiedByDefault(false);
mSearchView.setOnQueryTextListener(此);
mSearchView.setSubmitButtonEnabled(true);
mSearchView.setQueryHint(“在此处搜索”);
}
公共布尔onQueryTextChange(字符串newText){
if(TextUtils.isEmpty(newText)){
mListView.clearTextFilter();
}否则{
mListView.setFilterText(新文本);
}
返回true;
}
公共布尔值onQueryTextSubmit(字符串查询){
返回false;
}
}
重复此步骤,了解您想要多少不同的活动


重复此操作,查看您想要多少不同的活动。

我是这样做的。我检查的不是搜索筛选列表时更改的项目位置,而是字符串值。它起作用了

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                    
            }
        });
mListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
字符串名称=(字符串)mListView.getItemAtPosition(位置);
如果(名称==“谷歌”){
Intent i=新Intent(MainActivity.this,Google.class);
星触觉(i);
}否则{
//指向相应活动的代码
}
});

我是这样做的。当搜索过滤列表时,我没有检查项目位置的变化,而是检查字符串值。它起作用了

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                    
            }
        });
mListView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
字符串名称=(字符串)mListView.getItemAtPosition(位置);
如果(名称==“谷歌”){
Intent i=新Intent(MainActivity.this,Google.class);
星触觉(i);
}否则{
//指向相应活动的代码
}
});

抱歉,我可能不清楚。现在,如果我们运行应用程序并在搜索框“apple”中写入内容,结果将被过滤,苹果基本上处于0位,因此如果单击它,它将引导您转到google.class而不是。抱歉,我可能不清楚。现在如果我们运行应用程序并在搜索框“apple”中写入内容,结果会被过滤,苹果基本上会处于0的位置,所以如果你点击它,它会引导你进入google.class