Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Android-自定义listview c中的搜索选项_C#_Android_Visual Studio_Listview_Xamarin - Fatal编程技术网

C# Android-自定义listview c中的搜索选项

C# Android-自定义listview c中的搜索选项,c#,android,visual-studio,listview,xamarin,C#,Android,Visual Studio,Listview,Xamarin,我有一个自定义的Listview,其中包含两个textview和一个imageview。listview包含100多行,这使得用户更难查看和选择他的项目。因此,我想添加搜索选项,以便于用户直接搜索他想要选择的项目。我已经在ListView上面添加了一个EditText,但是我不知道下一步该怎么做 Activity.cs: 因此,我希望过滤器按名称命名,例如,当他在EditText中写入字母F时,listview应仅显示法国和芬兰。我怎样才能做到?请帮助我。您想使用MultiAutoComplet

我有一个自定义的Listview,其中包含两个textview和一个imageview。listview包含100多行,这使得用户更难查看和选择他的项目。因此,我想添加搜索选项,以便于用户直接搜索他想要选择的项目。我已经在ListView上面添加了一个EditText,但是我不知道下一步该怎么做

Activity.cs:

因此,我希望过滤器按名称命名,例如,当他在EditText中写入字母F时,listview应仅显示法国和芬兰。我怎样才能做到?请帮助我。

您想使用MultiAutoCompleteTextView或AutoCompleteTextView而不是EditText

从中可以看出它们之间的区别

如果你只想输入一个国家,你可以使用,这是官方的例子

更新: 我已更新我,以下是结果:

这不是问题所在。问题是listview。我只想在其中显示搜索的项目。比如,如果用户搜索法国,它应该只显示包含FranceSorry的行,我误解了你,你想要你的ListView滚动到法国,还是你想要你的ListView只显示法国?怎么样?adapter.getFilter.filters;你需要为你的适配器定制一个过滤器。这是一个更完整的例子。我有一个小问题,我在这里得到一个错误:results.Values=resultsValues;在FilterResults PerformFilteringCharSequence约束函数中,错误是:无法将类型TableList隐式转换为Java.Lang.Object??我已经编辑了我的演示,它将为您提供一些想法。
ListView mListView;
MyAdapter adapter;
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);

    // Set our view from the "main" layout resource
    SetContentView(Resource.Layout.activity_main);
    mListView = FindViewById<ListView>(Resource.Id.listview);
    List<TableList> list = new List<TableList>();
    EditText search = view.FindViewById<EditText>(Resource.Id.searchList);
    list.Add(new TableList("Germany","Europe"));
    list.Add(new TableList("France","Europe"));
    list.Add(new TableList("Finland","Europe"));
    list.Add(new TableList("Germany","Europe"));
    list.Add(new TableList("France","Europe"));
    list.Add(new TableList("Germany","Europe"));
    list.Add(new TableList("France","Europe"));
    list.Add(new TableList("Finland","Europe"));

    adapter = new MyAdapter(this, list);
    mListView.Adapter = adapter;
    mListView.ItemClick += MListView_ItemClick;
}

class MyAdapter : BaseAdapter
{
    Context mContext;
    List<TableList> mitems;
    public MyAdapter(Context context, List<TableList> list)
    {
        this.mContext = context;
        this.mitems = list;

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

    public override Java.Lang.Object GetItem(int position)
    {
        return mitems[position];
    }

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

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        DataViewHolder holder = null;
        if (convertView == null)
        {
            convertView = LayoutInflater.From(mContext).Inflate(Resource.Layout.CoinList, null, false);
            holder = new DataViewHolder();
            holder.tv = convertView.FindViewById<TextView>(Resource.Id.CoinName);
            holder.iv = convertView.FindViewById<ImageView>(Resource.Id.imageView1);
            holder.cb = convertView.FindViewById<TextView>(Resource.Id.cont);
            convertView.Tag = holder;
        }
        else
        {
            holder = convertView.Tag as DataViewHolder;

        }
        holder.cb.Tag = position;

        holder.tv.Text = mitems[position].Name;
        holder.cb.Text = mitems[position].Cont
        holder.iv.SetImageResource(Resource.Drawable.dapao);
        return convertView;

    }
}

public class DataViewHolder : Java.Lang.Object
{
    public ImageView iv { get; set; }
    public TextView tv { get; set; }
    public TextView cb { get; set; }

}
public class TableList : Java.Lang.Object
{
    public TableList(string name, string cont)
    {
        this.Name = name;
        this.Cont = cont;
    }
    public string Name { get; set; }
    public string Cont { get; set; }
}
}