2014-02-27 2 views
0

Xamarin에는 EditText와 ListView가 있으며 사용자 지정 어댑터가 있습니다.필터 목록보기 EditText의 결과

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

내가 ListView에 결과를 필터링 할 수 있습니다 방법 : 여기

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에 항목 코드 : 여기
inputSearch = FindViewById<EditText>(Resource.Id.inputSearch); 
listView = FindViewById<ListView>(Resource.Id.List); 
listView.Adapter = new MapLocationDetailsActivityAdapter(this, tableItems); 

내 어댑터 코드 : 여기

내 코드입니다 EditText에 텍스트를 입력 할 때?

항목을 필터링하고 싶습니다. 가치가 있습니까? 사전에

감사

답변

0
당신이 "tableItems"라는 개체에서 목록 어댑터를 작성했다 보았다

- 그는 List<MapLocationDetailsActivityListViewTableItem>의 가정이 작동합니다 :

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

당신이에서 시작해야 아이디어를 먼저 목록을 필터링 한 다음 목록에서 새 목록 어댑터를 만들어야합니다.