【问题标题】:How to get the clicklistener for textview in child for expandable list?如何在子项中获取 textview 的 clicklistener 以获取可扩展列表?
【发布时间】:2023-03-20 17:09:02
【问题描述】:

我目前正在为 Expandablelist 中的子项使用自定义布局,其中包括 2 个不同的文本视图和一个图像视图。此外,它每次都会有 1 个孩子。我能够在适配器中获取 clicklistener,但无法在活动中获取它。

我也尝试在 onChildClick() 方法中获取单击侦听器事件,但它不起作用。

我在不同的活动中使用此适配器,因此我希望在活动本身中为其中一个文本视图设置点击侦听器。

请有任何建议。

【问题讨论】:

    标签: android expandablelistview onclicklistener


    【解决方案1】:

    伙计们,我能够完成这项工作,我在布局文件中添加了android:onClick="textClickHandler">,并在我的活动中包含如下监听器:

    public void textClickHandler(View view){
    
            if(view.getId() == R.id.textMore){
                Toast.makeText(mContext, "More Text Clicked.", Toast.LENGTH_LONG).show();
            }
        }
    

    【讨论】:

    • @Luksprog - 是的,这就是我在问题陈述中提到的我想要的,我的列表中只有一个孩子。感谢您指出了这一点。稍后我也会尝试你的解决方案来列出孩子。
    【解决方案2】:

    您不能在Activity 中的View 上设置侦听器(如果我理解您要执行的操作)。一种方法是:

    • 使您的适配器具有您在实例化适配器时设置的boolean 值(这将告诉您适配器是否属于Activity,其中TextView 应该有一个监听器(对于true,对于示例)。如果值为false,那么您将确保不要在TextView 上设置侦听器。
    • 在自定义适配器的getChildView 方法中将侦听器设置为所需的TextView(仅当先前的值为true 时,您将简单地忽略这部分)。
    • 在该视图的OnCLickListeneronClick 方法中,使用您在自定义适配器的构造函数中传递的Context。将其投射到所需的活动并根据需要使用它。一种更优雅的方法是让所需的Activity 实现自定义接口(在单击TextView 时通知您)。然后在适配器中创建一个具有该接口类型的字段,当您实例化侦听器时,您将设置该字段指向您的Activity。当点击TextView 时,调用上面该字段的方法并通知Activity 发生了一些事情,它应该做一些事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多