【问题标题】:xamarin android listview filter using searchview or edittextxamarin android listview过滤器使用searchview或edittext
【发布时间】:2018-01-29 12:07:54
【问题描述】:

我已经使用了许多示例来实现列表视图中的搜索,但它们都不起作用。我有一个来自 JSON 数组的列表视图绑定,我想实现一种简单的方法来搜索列表视图中的项目。我在互联网上找到了一些示例,但它们不起作用。 我正在使用 Xamarin Android。

主活动:

   DaftarGaleri = FindViewById<ListView>(Resource.Id.dataList);
        itemGaleri = new List<Galeri>();
        var webClient = new WebClient();
        webClient.DownloadStringAsync(BaseUri);
        progress = FindViewById<ProgressBar>(Resource.Id.progressBar);

        //Showing loading progressbar
        progress.Visibility = ViewStates.Visible;
        webClient.DownloadStringCompleted += WebClient_DownloadStringCompleted;

    }

    private void WebClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        RunOnUiThread(() =>
        {
            itemGaleri = JsonConvert.DeserializeObject<List<Galeri>>(e.Result);
            CustomListAdapter adapter = new CustomListAdapter(this, itemGaleri);
            DaftarGaleri.Adapter = adapter;
            progress.Visibility = ViewStates.Gone;
            DaftarGaleri.ItemClick += DaftarGaleri_ItemClick;

        }
        );

    }

customlistadapter 类:

  public class CustomListAdapter : BaseAdapter<Galeri>
{
    public CustomListAdapter()
    {
    }
    Activity context;
    List<Galeri> list;

    public CustomListAdapter(Activity _context, List<Galeri> _list) : base()
    {
        this.context = _context;
        this.list = _list;
    }

    public override int Count
    {
        get { return list.Count; }
    }

    public override long GetItemId(int position)
    {
        return position;
    }

    public override Galeri this[int index]
    {
        get { return list[index]; }
    }

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        View view = convertView;

        // re-use an existing view, if one is available
        // otherwise create a new one
        if (view == null)
            view = context.LayoutInflater.Inflate(Resource.Layout.item, parent, false);


        Galeri item = this[position];
        view.FindViewById<TextView>(Resource.Id.productname).Text = item.meta_title;
        view.FindViewById<TextView>(Resource.Id.category).Text = item.model;
        view.FindViewById<TextView>(Resource.Id.description).Text = item.description;

        using (var imageView = view.FindViewById<ImageView>(Resource.Id.Photo))
        {
            string url = Android.Text.Html.FromHtml("http://www.termamed.com/store/image/"+item.image).ToString();

            //Download and display image
            Koush.UrlImageViewHelper.SetUrlDrawable(imageView,url, Resource.Drawable.products);
        }
        return view;
    }

谁能帮忙..谢谢

【问题讨论】:

  • 您能描述一下您遇到的错误吗?
  • 您绝对必须说出您尝试了哪些示例,因为这里的人们会浪费时间写答案,建议您已经尝试过什么。

标签: android xamarin


【解决方案1】:

使用 searchview 或 edittext 的 xamarin android listview 过滤器

您可以参考Cheesebaron's SearchView-Sample:展示如何使用SearchView 和自定义Filter 实现Filter ListView

别忘了在你的项目中添加ObjectExtensions 类。


其他一些有用的链接:

【讨论】:

    猜你喜欢
    • 2012-12-11
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多