Android 如何在可扩展列表的子级中获取文本视图的clicklistener?

Android 如何在可扩展列表的子级中获取文本视图的clicklistener?,android,expandablelistview,onclicklistener,Android,Expandablelistview,Onclicklistener,我目前正在Expandablelist中为子级使用自定义布局,其中包括2个不同的文本视图和一个imageview。而且每次都会有一个孩子。我可以在适配器中获取clicklistener,但无法在活动中获取它 我还尝试在onChildClick()方法中获取click listener事件,但它不起作用 我在不同的活动中使用此适配器,因此我希望在活动本身中有一个文本视图的单击侦听器 请提供任何建议。如果我理解您的意图,您无法通过活动将侦听器设置在视图上。一种方法是: 使适配器具有实例化适配器时设

我目前正在Expandablelist中为子级使用自定义布局,其中包括2个不同的文本视图和一个imageview。而且每次都会有一个孩子。我可以在适配器中获取clicklistener,但无法在活动中获取它

我还尝试在onChildClick()方法中获取click listener事件,但它不起作用

我在不同的活动中使用此适配器,因此我希望在活动本身中有一个文本视图的单击侦听器


请提供任何建议。

如果我理解您的意图,您无法通过
活动将侦听器设置在
视图上。一种方法是:

  • 使适配器具有实例化适配器时设置的
    布尔值(这将告诉您适配器是否属于
    活动
    ,其中
    文本视图
    应具有侦听器(例如,对于
    )。如果该值为
    false
    ,则确保不要在
    TextView
    上设置侦听器
  • 在自定义适配器的
    getChildView
    方法中,在所需的
    TextView
    上设置侦听器(仅当上一个值为
    true
    时,对于其他活动,您只需忽略此部分)
  • 在该视图的
    OnCLickListener
    onClick
    方法中,使用传入自定义适配器构造函数的
    Context
    。将其转换为所需的活动,并根据需要使用它。一种更优雅的方法是让所需的
    活动
    实现一个自定义界面(在单击
    文本视图
    时通知您)。然后在适配器中创建一个带有该接口类型的字段,您将在实例化侦听器时将该字段设置为指向您的
    活动。单击
    TextView
    时,调用上面该字段的方法,并通知
    活动发生了一些事情,它应该做一些事情

如果我理解您的意图,则无法通过
活动将侦听器设置在
视图上。一种方法是:

  • 使适配器具有实例化适配器时设置的
    布尔值(这将告诉您适配器是否属于
    活动
    ,其中
    文本视图
    应具有侦听器(例如,对于
    )。如果该值为
    false
    ,则确保不要在
    TextView
    上设置侦听器
  • 在自定义适配器的
    getChildView
    方法中,在所需的
    TextView
    上设置侦听器(仅当上一个值为
    true
    时,对于其他活动,您只需忽略此部分)
  • 在该视图的
    OnCLickListener
    onClick
    方法中,使用传入自定义适配器构造函数的
    Context
    。将其转换为所需的活动,并根据需要使用它。一种更优雅的方法是让所需的
    活动
    实现一个自定义界面(在单击
    文本视图
    时通知您)。然后在适配器中创建一个带有该接口类型的字段,您将在实例化侦听器时将该字段设置为指向您的
    活动。单击
    TextView
    时,调用上面该字段的方法,并通知
    活动发生了一些事情,它应该做一些事情

我能够做到这一点,伙计们,我在布局文件中添加了
android:onClick=“textClickHandler”>
,并在我的活动中包括了侦听器,如下所示:

public void textClickHandler(View view){

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

我能够做到这一点,伙计们,我在布局文件中添加了
android:onClick=“textClickHandler”>
,并在我的活动中包括了侦听器,如下所示:

public void textClickHandler(View view){

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

只有当您不关心单击了
ExpandableListView
中的
TextView
时(从位置0处的子项,从位置7处的子项等),这才有效。@Luksprog-是的,这是我想要的,正如我在问题陈述中提到的,我在列表中只有一个子项。谢谢你指出这一点。稍后,我也将尝试您的解决方案,用于儿童列表。只有当您不关心从
ExpandableListView
中单击了什么
TextView
时(从位置0的儿童,从位置7的儿童等)。@Luksprog-是的,这是我想要的,正如我的问题陈述中所述,我在列表中只有一个儿童。谢谢你指出这一点。我也会在以后的某个时候为孩子列表尝试你的解决方案。