【问题标题】:xamarin custom ListView does nothing when one item is selected选择一项时,xamarin 自定义 ListView 什么都不做
【发布时间】:2016-05-03 15:24:28
【问题描述】:
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 的实现。

【问题讨论】:

    标签: listview xamarin xamarin.android listviewitem


    【解决方案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;
    }
    

    【讨论】:

    • 谢谢,是真的,我没想到,事件是重复的。
    猜你喜欢
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    相关资源
    最近更新 更多