Android Studio-ListView-getFilter()之后setOnItemClickListener上的错误位置。filter()
我有个问题。我有一个SearchView,当用户输入单词时,它会过滤我的ListViewAdapter。这里一切都好。我可以获取listViewAdapter并对其进行过滤,但是,当我尝试获取它的位置时,如果列表项未被过滤,它会正常工作;当我搜索新词时,我无法获取它的正确位置。我将尝试用下面的代码来解释这一点:Android Studio-ListView-getFilter()之后setOnItemClickListener上的错误位置。filter(),android,listview,searchview,Android,Listview,Searchview,我有个问题。我有一个SearchView,当用户输入单词时,它会过滤我的ListViewAdapter。这里一切都好。我可以获取listViewAdapter并对其进行过滤,但是,当我尝试获取它的位置时,如果列表项未被过滤,它会正常工作;当我搜索新词时,我无法获取它的正确位置。我将尝试用下面的代码来解释这一点: @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.i
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main_menu, menu);
MenuItem searchItem = menu.findItem(R.id.search);
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
if (searchItem != null) {
searchView = (SearchView) searchItem.getActionView();
}
if (searchView != null) {
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
searchView.setQueryHint("Buscar");
queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
// Log.i("onQueryTextChange", newText);
listViewAdapter.getFilter().filter(newText);
return false;
}
@Override
public boolean onQueryTextSubmit(String query) {
//Log.i("onQueryTextSubmit", query);
return true;
}
};
searchView.setOnQueryTextListener(queryTextListener);
}
super.onCreateOptionsMenu(menu, inflater);
}
上面是我的搜索视图,这里的一切都很好,问题是当我搜索某个东西并尝试获取项目位置时
listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3)
{
String cd_product = String.valueOf(adapter.getItemIdAtPosition(position)+1);
productList = db.getDataProducts(cd_product);
Intent intent = new Intent(getActivity(), ReaderActivity.class);
intent.putExtra("product_name", productList.get(0));
startActivity(intent);
}
});
listView.setOnItemClickListener(新的AdapterView.OnItemClickListener()
{
@凌驾
公共单击(适配器视图适配器,视图v,内部位置,长arg3)
{
String cd_product=String.valueOf(adapter.getItemIdAtPosition(position)+1);
productList=db.getDataProducts(cd_产品);
Intent Intent=新的Intent(getActivity(),ReaderActivity.class);
intent.putExtra(“product_name”,productList.get(0));
星触觉(意向);
}
});
以上是我的问题,当我过滤的东西,我失去了原来的位置。让我们假设第一个项目的位置为“0”I sum+1,因为我的数据库的产品代码为1,因此,如果我的listview上有两个项目,那么我有两个位置,1和2。当应用程序加载时,一切正常。它的工作非常完美,但是,在我过滤它之后,我无法得到它的正确位置。第二项的位置必须是2,但在我的例子中是1。所以我从数据库中得到了错误的数据。我用一个词过滤listview,当它被过滤时,我从第1项得到位置(这是错误的),我想得到当前项目的位置
谢谢大家的关注,很抱歉英语不好。
我希望有人能帮助我