0

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

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

我在不同的活动中使用这个适配器,所以我想为活动本身中的一个文本视图设置点击监听器。

请有任何建议。

4

2 回答 2

2

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

public void textClickHandler(View view){

        if(view.getId() == R.id.textMore){
            Toast.makeText(mContext, "More Text Clicked.", Toast.LENGTH_LONG).show();
        }
    }
于 2012-05-28T05:01:23.617 回答
1

您不能将侦听器设置为Viewfrom Activity(如果我了解您要做什么)。一种方法是:

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