搜索后更新位置列表视图

时间:2018-01-04 06:46:02

标签: listview xamarin xamarin.android

我有问题。我有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;???
}

2 个答案:

答案 0 :(得分:1)

您可以点击以下链接,这些可以帮助您解决问题。

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

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

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

答案 1 :(得分: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();
            }
        }

    }