2016-05-03 82 views
0
public class ListViewFaixaAdapter : BaseAdapter<Model> { 
    LayoutInflater _inflater; 
    List<Model> _faixas; 

    public ListViewFaixaAdapter(LayoutInflater inflater) : base(){ 
     _faixas = new List<Model>(); 
     for(int i = 0; i < 15; i++) { 
      Model faixa = new Model(); 
      faixa.descricao = "Descrição " + i; 
      faixa.letra = Convert.ToChar('A' + i).ToString() ; 
      _faixas.Add(faixa); 
     } 
     _inflater = inflater; 
    } 

    public override Model this[int position] { 
     get { 
      return _faixas[position]; 
     } 
    } 

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

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

    public override View GetView(int position, View linhaView, ViewGroup parent) { 
     var item = _faixas[position];    
     linhaView = linhaView ?? _inflater.Inflate(Resource.Layout.AuditoriaFaixaLinha, null); 
     linhaView.Selected = false; 
     /* when uncomment something itens are click event duplicate 
     linhaView.Click += (sender, e) => { 
      //linhaView.Selected = !linhaView.Selected; 
/*((TextView)linhaView.FindViewWithTag("lblAuditoriaFaixaNota")).Selected = linhaView.Selected; 
      ((TextView)linhaView.FindViewWithTag("lblAuditoriaFaixaLabel")).Selected = linhaView.Selected; 
      ((TextView)linhaView.FindViewWithTag("lblAuditoriaFaixaDescricao")).Selected = linhaView.Selected;    

     };*/ 
     return linhaView; 
    } 
} 
// using adapter 
var listView = view.FindViewById<ListView>(Resource.Id.Item); 
listView.Adapter = new ListViewFaixaAdapter(inflater); 
listView.ItemClick += (sender, e) => { 
    // do show when I clicked 
    Toast.MakeText(Activity, "test", ToastLength.Short).Show(); 
}; 

在顯示ListView後,當我單擊一個項目時,許多事件僅由一個項目觸發。我沒有找到一個完整的示例,顯示xamarin上的自定義ListView的實現。當選擇一個項目時,xamarin自定義ListView不起作用

回答

1

,如果你的視圖已經存在,你不應該指定一個額外的事件處理程序,它

public override View GetView(int position, View linhaView, ViewGroup parent) { 

    var item = _faixas[position]; 

    if (linhaView == null) { 
     linhaView = _inflater.Inflate(Resource.Layout.AuditoriaFaixaLinha, null); 

     linhaView.Click += (sender, e) => { 
     // handler code goes here... 
     } 
    } 

    linhaView.Selected = false; 

    return linhaView; 
} 
+0

謝謝你,是真的,我還沒有在想,事件是被重複。 –

相關問題