您正在根据以下内容开始您的活动position
但是position
当您进行搜索时将会改变,因为列表会缩小并且positions
将更改以便获取与列表中指定位置关联的数据使用获取位置上的项目 https://developer.android.com/reference/android/widget/AdapterView.html#getSelectedItemPosition()
所以根据数据改变条件
if (parent.getItemAtPosition(position).equals("item1")) {
Intent myIntent = new Intent(view.getContext(), activity1.class);
startActivityForResult(myIntent,0);
}
else if (parent.getItemAtPosition(position).equals("item2")) { // use any item value here you want
Intent myIntent = new Intent(view.getContext(), aactivity4.class);
startActivityForResult(myIntent,0);
}
注意:您可以使用switch
以及而不是长if
or else-if
ladder
例如你有三个字符串
item 1 position 0
item 2 position 1
item 3 position 2
搜索第 2 项后,您的列表中有两个值接近您的搜索
item 2 position 0
item 3 position 1
所以位置会改变所以不要使用它而是使用数据
Code
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent = null;
// global string to class
selectedValue = String.valueOf(parent.getItemAtPosition(position));
if (selectedValue.equals("item1")) {
// ^^^ use any item value here you want
Intent myIntent = new Intent(view.getContext(), activity1.class);
startActivityForResult(myIntent,0);
}
else if (selectedValue.equals("item2")) {
Intent myIntent = new Intent(view.getContext(), aactivity4.class);
startActivityForResult(myIntent,0);
}
}
});