从适配器内部调用Activity方法?

时间:2014-04-24 13:31:29

标签: android

我有一个自定义适配器,它在ListView图像上有一个单击侦听器。

此代码位于Adapter GetView:

holder.iconImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

          //code to do stuff when the image is clicked
}

列表视图中的我的图像由文件夹(代表文件夹)和实际图像组成。

因此,如果用户单击文件夹图像,我希望能够在ActivityA中调用名为“moveDownFolder”的方法。

我不确定这是否可以在适配器内完成?

[编辑]基本上在ActivityA中,我在自定义ListView上有一个Click Listener,所以如果他们点击自定义ListView中的文本,它会向下移动一个文件夹(如果它是一个文件夹)。

但他们可以点击ListView中的图片,它会在新活动中打开图片。但是,如果他们点击列表视图中的文件夹图标(当然是ImageView中的图像) - 我希望代码向下移动文件夹,而不是尝试打开图像。

3 个答案:

答案 0 :(得分:7)

我建议使用interface作为监听器。

例如:

1,创建你的界面:

public interface MyListener {

void folderClicked();
}

2,让ActivityA像这样实现这个接口:

public class ActivityA extends Activity implements MyListener 

3,你必须自动覆盖方法文件夹点击它将如下所示:

@Override
protected void folderClicked() {
  // Do your stuff here.

}

4,使用如下构造函数将活动侦听器发送到适配器:

MyAdpater adapter = new MyAdpater(ActivityA.this);

5,在你的适配器类中,你的代码应该是这样的:

public class TimeLineAdapter extends BaseAdapter {

private MyListener mListener;


public TimeLineAdapter(MyListener listener) {
    super();

    mListener = listener;


}

holder.iconImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
         mListener.onFolderClicked()
      //code to do stuff when the image is clicked
 }

答案 1 :(得分:1)

是的,可以完成,只需按照以下方式设置您的功能static public moveDownFolder()。您需要确保创建了活动。从Adapter调用该函数只需执行:YourActivity.moveDownFolder()

答案 2 :(得分:1)

如果适配器是ActivityA的内部类,请尝试:

ActivityA.this.moveDownFolder();