搜索后更新位置列表视图

问题描述 投票:1回答:2

我有个问题。我有30个项目的列表视图。我可以在listview中成功搜索,但当我点击我搜索的内容时,我没有得到关于这个项目的信息。搜索到的项目通常在Json的第21位。在我搜索之后,它出现在listview中的上面一行。当我完成itemclick时,它会给出第0项的结果。我该如何解决?

{
    ...
    ...
    ...
    mListView.ItemClick += MListView_ItemClick;
}

private async void MListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
     int i;
     i = e.Position;???
}
listview xamarin xamarin.android
2个回答
1
投票

我假设你在列表项目中搜索。

解。

  • 使用两个列表(永久和临时)
  • 两个列表在开头都包含相同的数据集,但临时列表可以在您搜索时更改。不会对永久列表进行任何更改
  • 将临时列表传递给适配器并保持永久列表不变。
  • 在搜索文本视图上添加addTextChangedListener()
  • 使用任何关键字进行搜索时。在你的。中添加这些项目 与您的搜索条件匹配的临时列表。
  • 临时列表仅包含正在搜索的项目。
  • 通知适配器
  • 清除搜索字段后,清除临时列表并将永久列表中的所有项目添加到临时列表。
  • 通知适配器

用例示例

    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        String searchWord = charSequence.toString();
        if (mPermanentList.size() > 0) {
            if (searchWord.length() > 0) {
                mTemporaryList.clear();
                for (i = 0; i < mPermanentList.size(); i++) {
                    if (mPermanentList.get(i).getName().contains(searchWord)) {
                        mTemporaryList.add(mPermanentList.get(i));

                    }
                    mFilesAdapter.notifyDataSetChanged();
                }
            } else {
                mTemporaryList.clear();
                mTemporaryList.addAll(mPermanentList);
                mFilesAdapter.notifyDataSetChanged();
            }
        }

    }

1
投票

嗨,请按照以下链接,这些可以帮助您解决您的问题。

https://gist.github.com/fjfish/3024308

注意:处理适配器(getView())中的单击不在活动中。

希望它有所帮助,如果它适合你,那么请关闭这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.