gpt4 book ai didi

C# 列表问题(Android/Monodroid ListView 搜索)

转载 作者:行者123 更新时间:2023-11-29 21:11:12 25 4
gpt4 key购买 nike

我在 C# 中使用 Monodroid 进行 Android 开发。

我正在尝试创建一个搜索功能。如果用户键入一个搜索词,它会起作用,但是当按下退格键并且文本框中没有任何内容时 (strTheFilter == ""),我的 ListView 不会被更新。

从调试中我可以看到,当用户删除搜索词时,m_lCallSigns Count 为零,因此它没有添加任何内容。 bNeedToFilter 已经在搜索什么都没有的时候使用了。为什么要这样做?在该类的构造函数中初始化,初始化后调用该函数。

ListAdapter.cs  

public void DisplayNewData(List<CallSignItem> new_items)
{
m_lCallSigns=new_items;
NotifyDataSetChanged();
}

public void GetCallSignsFiltered(String strTheFilter, bool bNeedToFilter)
{
strTheFilter = strTheFilter.ToLower();

List<CallSignItem> lFiltered = new List<CallSignItem>();

foreach (CallSignItem item in m_lCallSigns)
{
if (item.strCallSign.ToLower().Contains(strTheFilter)
|| !bNeedToFilter)
{
lFiltered.Add(item);
}
}

DisplayNewData(lFiltered);
}

该函数是从我的 Activity 类中调用的。

Activity.cs 


/// <summary>
/// Updates the listview with search criteria (Action Listener).
/// </summary>
/// <param name="sender">Sender.</param>
/// <param name="args">Arguments.</param>
private void InputSearchOnTextChanged(object sender, System.EventArgs args)
{
String strSearch = m_etSearch.Text;

bool bNeedToFilter = true;

// If it's empty, we need the full list
if (strSearch.Count() == 0)
{
bNeedToFilter = false;
}

// The EditText has a limit of 7 chars defined
// in xml. Tell the user
if (strSearch.Count() >= 7)
{
Utils.DisplayDialogMessage ("Search",
"You cannot enter more than 7 characters.",
true,
"",
"Ok",
false,
this);
}

listAdapter.GetCallSignsFiltered(strSearch, bNeedToFilter);
}

最佳答案

每次过滤时,您都会将已过滤 列表传递给 DisplayNewData()

DisplayNewData(lFiltered);

public void DisplayNewData(List<CallSignItem> new_items)
{
m_lCallSigns=new_items;
NotifyDataSetChanged();
}

然后将已过滤 列表分配给 m_lCallSigns。 m_lCallSigns 也是您在过滤时使用的“主”列表。您需要保留两份副本,一份未过滤的主副本和一份用于显示的过滤副本。

关于C# 列表问题(Android/Monodroid ListView 搜索),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22766327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com