【问题标题】:Filter ListView results from an EditText从 EditText 过滤 ListView 结果
【发布时间】:2014-02-27 08:00:15
【问题描述】:

在 Xamarin 中,我有一个 EditText 和一个带有自定义适配器的 ListView。

这是我的代码:

inputSearch = FindViewById<EditText>(Resource.Id.inputSearch);
listView = FindViewById<ListView>(Resource.Id.List);
listView.Adapter = new MapLocationDetailsActivityAdapter(this, tableItems);

这是我的适配器代码:

public class MapLocationDetailsActivityAdapter : BaseAdapter<MapLocationDetailsActivityListViewTableItem> {
    List<MapLocationDetailsActivityListViewTableItem> items;
    Activity context;
    public MapLocationDetailsActivityAdapter(Activity context, List<MapLocationDetailsActivityListViewTableItem> items)
        : base()
    {
        this.context = context;
        this.items = items;
    }
    public override long GetItemId(int position)
    {
        return position;
    }
    public override MapLocationDetailsActivityListViewTableItem this[int position]
    {
        get { return items[position]; }
    }
    public override int Count
    {
        get { return items.Count; }
    }
    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        var item = items[position];

        View view = convertView;
        if (view == null) // no view to re-use, create new
            view = context.LayoutInflater.Inflate(Resource.Layout.CustomView, null);
        view.FindViewById<TextView>(Resource.Id.TextViewMapHeading).Text = item.Heading;
        view.FindViewById<TextView> (Resource.Id.TextViewMapHeading).TextSize = 20;
        view.FindViewById<TextView>(Resource.Id.TextViewItem).Text = item.SubHeading;
        view.FindViewById<ImageView>(Resource.Id.Image).SetImageResource(item.ImageResourceId);

        return view;
    }
}

这是我的 ListView 项目代码:

public class MapLocationDetailsActivityListViewTableItem 
{
    public string Heading { get; set; }
    public string SubHeading { get; set; }
    public int ImageResourceId { get; set; }
}

当我在 EditText 中输入文本时,如何过滤 ListView 结果?

我想过滤item.Heading值?

提前致谢

【问题讨论】:

    标签: android android-listview filter android-edittext xamarin


    【解决方案1】:

    我看到您正在从一个名为“tableItems”的对象创建列表适配器 - 假设这是一个 List&lt;MapLocationDetailsActivityListViewTableItem&gt;,这应该可以工作:

    inputSearch.TextChanged += (sender, e) =>
    {
        listView.Adapter = new MapLocationDetailsActivityAdapter
        (
            this,
            tableItems.Where(item => item.Heading.StartsWith(inputSearch.Text)).ToList()
        );
    };
    

    您应该开始的想法是,您首先必须过滤您的列表,然后从中创建一个新的列表适配器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 2017-12-12
      • 2020-10-06
      • 2012-02-02
      • 2013-10-13
      相关资源
      最近更新 更多