在列表视图中搜索时不显示正确的位置
Not Showing Correct Position While Searching in Listview
public class MainActivity extends AppCompatActivity {
SearchView searchView;
ListView listView;
ArrayList list;
ArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
searchView = findViewById(R.id.searchView);
listView = findViewById(R.id.listView);
list = new ArrayList<>();
list.add("Apple");//0th item
list.add("Apple");//1st item
list.add("Banana");//2nd item
list.add("Banana");//3rd item
list.add("Pineapple");//4th item
list.add("Pineapple");//5th item
list.add("Orange");//6th item
list.add("Orange");//7th item
list.add("Mango");//8th item
list.add("Mango");//9th item
list.add("Grapes");//10th item
list.add("Grapes");//11th item
list.add("Lemon");//12th item
list.add("Lemon");//13th item
list.add("Melon");//14th item
list.add("Watermelon");//15th item
list.add("Watermelon");//16th item
list.add("Papaya");//17th item
list.add("Papaya");//18th item
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,list);
listView.setAdapter(adapter);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
if(list.contains(query))
{
// Toast.makeText(getApplicationContext(),query,Toast.LENGTH_SHORT).show();
adapter.getFilter().filter(query);
}
else
{
Toast.makeText(MainActivity.this, "No Match found",Toast.LENGTH_LONG).show();
}
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);
//Toast.makeText(getApplicationContext(),newText,Toast.LENGTH_SHORT).show();
return false;
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int itemPosition = position;
Toast.makeText(MainActivity.this,adapter.getItem(position)+ "",Toast.LENGTH_SHORT).show();
String itemValue = (String) adapter.getItem(position);
Toast.makeText(getApplicationContext(),
"Position :"+itemPosition+" ListItem : " +itemValue , Toast.LENGTH_LONG)
.show();
}
});
}
}
在这个程序中,我将苹果作为第 0 项和第一项,将香蕉作为第 2 项和第 3 项,依此类推。
但是在搜索时我想根据我点击的木瓜将木瓜显示为第 17 位或第 18 位。
不搜索它会正确显示水果的数量 location.but 而搜索它会显示如果列表视图中显示 4 个项目它根据 clicking.Please 帮助我烤 0,1,2,3搞清楚
如果您使用 'P' 进行搜索,将返回菠萝和木瓜。最初在搜索之前,菠萝排在第 4 和第 5 位,木瓜排在第 17 和第 18 位。但是,当您搜索时,只会返回四个结果,因此 Pineapple 将位于位置 0、1,而 Papaya 将位于位置 2 和 3。项目的位置随着列表中项目的数量而变化。因此,您看到的行为是预期的正确行为。
public class MainActivity extends AppCompatActivity {
SearchView searchView;
ListView listView;
ArrayList list;
ArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
searchView = findViewById(R.id.searchView);
listView = findViewById(R.id.listView);
list = new ArrayList<>();
list.add("Apple");//0th item
list.add("Apple");//1st item
list.add("Banana");//2nd item
list.add("Banana");//3rd item
list.add("Pineapple");//4th item
list.add("Pineapple");//5th item
list.add("Orange");//6th item
list.add("Orange");//7th item
list.add("Mango");//8th item
list.add("Mango");//9th item
list.add("Grapes");//10th item
list.add("Grapes");//11th item
list.add("Lemon");//12th item
list.add("Lemon");//13th item
list.add("Melon");//14th item
list.add("Watermelon");//15th item
list.add("Watermelon");//16th item
list.add("Papaya");//17th item
list.add("Papaya");//18th item
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,list);
listView.setAdapter(adapter);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
if(list.contains(query))
{
// Toast.makeText(getApplicationContext(),query,Toast.LENGTH_SHORT).show();
adapter.getFilter().filter(query);
}
else
{
Toast.makeText(MainActivity.this, "No Match found",Toast.LENGTH_LONG).show();
}
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);
//Toast.makeText(getApplicationContext(),newText,Toast.LENGTH_SHORT).show();
return false;
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int itemPosition = position;
Toast.makeText(MainActivity.this,adapter.getItem(position)+ "",Toast.LENGTH_SHORT).show();
String itemValue = (String) adapter.getItem(position);
Toast.makeText(getApplicationContext(),
"Position :"+itemPosition+" ListItem : " +itemValue , Toast.LENGTH_LONG)
.show();
}
});
}
}
在这个程序中,我将苹果作为第 0 项和第一项,将香蕉作为第 2 项和第 3 项,依此类推。 但是在搜索时我想根据我点击的木瓜将木瓜显示为第 17 位或第 18 位。
不搜索它会正确显示水果的数量 location.but 而搜索它会显示如果列表视图中显示 4 个项目它根据 clicking.Please 帮助我烤 0,1,2,3搞清楚
如果您使用 'P' 进行搜索,将返回菠萝和木瓜。最初在搜索之前,菠萝排在第 4 和第 5 位,木瓜排在第 17 和第 18 位。但是,当您搜索时,只会返回四个结果,因此 Pineapple 将位于位置 0、1,而 Papaya 将位于位置 2 和 3。项目的位置随着列表中项目的数量而变化。因此,您看到的行为是预期的正确行为。