【问题标题】:In Xamarin ExpandableListView, how to consume groupclick?在 Xamarin ExpandableListView 中,如何使用 groupclick?
【发布时间】:2016-05-02 17:14:35
【问题描述】:

我有一个 ExpandableListView,我需要在其中使用 GroupClick 并防止发生默认的展开/折叠操作。

使用“C#方式”:

listView.GroupClick += (s, e) =>
{
    return true;
};

它甚至无效,因为 GroupClicks 应该是无效的,因此不能返回 true 并消耗点击。

如果我尝试“Java 方式”(我不想这样做,但如果有必要,请理解):

class OnGroupClickListener : Java.Lang.Object, IOnGroupClickListener
{
    public bool OnGroupClick(ExpandableListView parent, View clickedView, int groupPosition, long id)
    {
        Console.WriteLine("consuming groupclick");
        return true;
    }
}

// elsewhere
mylistview.SetOnGroupClickListener(new OnGroupClickListener());

它实际上并没有做任何事情; OnGroupClick 永远不会被调用。

然后,我尝试在视图上通过 clickable = false 完全禁用点击,这又不太可取,因为我仍然想捕获它并实现我自己的处理程序。但即使这似乎并没有阻止它,即使我在代码和可扩展列表视图和标题线性布局的布局 xml 中都设置了可点击的 false。

似乎没有办法让它自行停止扩展/折叠。我究竟做错了什么?我觉得我可能错过了每种方式的一些基本方面。

【问题讨论】:

    标签: c# android xamarin expandablelistview


    【解决方案1】:

    如果您将 onclickEvent 添加到父布局或 parentView 的任何视图,那么它将自动覆盖默认的展开/折叠操作。

    【讨论】:

    • 这似乎可行,谢谢。我在标题行中添加了 rowView.SetOnClickListener ,它会捕获点击并阻止默认操作。添加 rowView.Click += 委托不会。这是 Xamarin 中的错误(或者更像是缺少功能实现)?
    • 好吧,我不是 Xamrin 开发人员,但我可以在这方面为您提供指导。请说明您目前的要求。
    • 这不是bug,我们在android studio中也有类似的问题。
    • 没什么重要的,只是 Xamarin 的所有文档和论坛都说“你应该总是使用 obj.Click += delegate”,但我一直遇到这样的情况,它不够用,而且是“Java”方式必须改为使用。
    • 是的,对。我们都需要根据需要定制东西。 :)
    猜你喜欢
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 2016-03-26
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    相关资源
    最近更新 更多