gpt4 book ai didi

listview - Android 单声道中的 AddTextChangedListener

转载 作者:行者123 更新时间:2023-12-05 09:24:18 24 4
gpt4 key购买 nike

我有一个用于填充 ListView 的数据库。在此 ListView 上方有一个编辑文本,用户可以在其中搜索 ListView 中的项目。根据输入,我希望对 ListView 进行细化和过滤,以仅包含与输入相似的项目。这在 java 中很简单,但在 xamarin 的 android 单声道中很困难。这是我的 onCreate() 方法,其中数据库填充 ListView 。

string[] categories;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView(Resource.Layout.b);
var destPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "DDxDDB");
System.IO.Stream source = Assets.Open("DDxDDB");
var dest = System.IO.File.Create (destPath);
source.CopyTo (dest);
var sql = "SELECT _id FROM Sx;";
var conn = new SqliteConnection ("Data Source=" + destPath.ToString());
conn.Open ();
var cmd = conn.CreateCommand ();
cmd.CommandText = sql;
SqliteDataReader reader = cmd.ExecuteReader ();
List<string> categ = new List<string>();
while (reader.Read())
{
categ.Add(reader.GetString(0));
}
categories = categ.ToArray();
ArrayAdapter<string> dataAdapter = new ArrayAdapter<String>(this, Resource.Layout.Main, categories);
ListView listView = (ListView) FindViewById(Resource.Id.listView1);
listView.Adapter = dataAdapter;
listView.TextFilterEnabled = true;
EditText myFilter = (EditText)FindViewById(Resource.Id.myFilter);
myFilter.AddTextChangedListener(New MyTextWatcher);
}

这是我也包含在此事件中的类,但我不知道要将什么代码添加到方法中以导致我过滤 ListView 。

public class MyTextWatcher: Java.Lang.Object, ITextWatcher
{
public void AfterTextChanged(IEditable s) {}
public void BeforeTextChanged(Java.Lang.ICharSequence arg0, int start, int count, int after) {}
public void OnTextChanged(Java.Lang.ICharSequence arg0, int start, int before, int count) {}
}

最佳答案

正如 aaronmix 所说,EditText 具有三个事件,您可以使用它们而不必实现 ITextWatcher 类。

因此您可以将 EventHandler 附加到 AfterTextChanged 并从 Event 的参数中获取 Editable:

var editText = FindViewById<EditText>(Resource.Id.MyEditText);
editText.AfterTextChanged += (sender, args) =>
{
//do your stuff in here
//args.Editable is the equivalent of the `s` argument from Java
//afterTextChanged(Editable s)
};

关于listview - Android 单声道中的 AddTextChangedListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13948428/

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