Android Studio-ListView-getFilter()之后setOnItemClickListener上的错误位置。filter()

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

我有个问题。我有一个SearchView,当用户输入单词时,它会过滤我的ListViewAdapter。这里一切都好。我可以获取listViewAdapter并对其进行过滤,但是,当我尝试获取它的位置时,如果列表项未被过滤,它会正常工作;当我搜索新词时,我无法获取它的正确位置。我将尝试用下面的代码来解释这一点:

 @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项得到位置(这是错误的),我想得到当前项目的位置

谢谢大家的关注,很抱歉英语不好。 我希望有人能帮助我