【问题标题】:SetOnClickListener in ListViewListView 中的 SetOnClickListener
【发布时间】:2013-02-02 14:15:33
【问题描述】:

早上好,我实现了一个listView,其中包含一些隐藏的信息和一个按钮,但是我遇到了按钮的点击事件,我使用的是 MonoDroid,我实现了接口OnClickListener () ,我的问题是,如果我在ListView 适配器内设置button.setOnclickListener (new MyClassClick ()),它会在每次滚动ListView 时创建一个对象,并且不能重用之前创建的对象,可以检查按钮是否已经有与他有关的行动?输入GetOnclickListener ()?

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

        var item = produtos[position];
        ViewHolderProdutos viewHolder;
        var view = convertView;
        if (view == null)
        {
            view = context.LayoutInflater.Inflate(Resource.Layout.ProdutoListItem,parent, false);
            viewHolder = new ViewHolder();
            viewHolder.Inicializa(view);
            view.Tag = viewHolder;
        }
        ProductsBase prod = (ProductsBase) productList[position];
        viewHolder = (ViewHolder)view.Tag;
        viewHolder.Bind(prod);
        var btnIncluir = view.FindViewById<Button>(Resource.Id.btnIncluir);
        //Evento Click do Botão Incluir
        btnIncluir.SetOnClickListener(new OnClickButton(productList[position].pro_codigo.ToString(), parent.Context));
        return view;

}

对不起,如果文字混乱,我的英语不好

【问题讨论】:

  • 我不确定我是否理解您的问题,但您可以保留对新 ClassClick 的引用,如果它已经初始化,则您无事可做。
  • 你能发布一些示例代码吗 - 我不清楚你的问题是来自描述。

标签: android .net xamarin.android


【解决方案1】:

在您的Adapters GetView 方法中,您只需要在convertViewnull 时设置OnClickListener

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

    if (null == view)
    {
        //1. inflate or create your views here
        //2. Set OnClickListeners
    }

    //populate views with Adapter item data
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 2016-07-30
    • 1970-01-01
    相关资源
    最近更新 更多