从另一个类对当前活动运行非静态方法

时间:2014-04-11 13:23:58

标签: java android

我正在努力弄清楚如何在我当前的活动中简单地从一个类(不是一个活动)调用和运行一个方法。

我目前的代码:

CustomListViewAdapter.java (其他类)

        public void onClick(View v) {
            int position = Photos.listView.getPositionForView(v);
            Log.v("value  ", "tada" + position);
            Photos photos = new Photos();
            photos.deletePhoto(position);

        }
    });

Photos.java (我当前的活动类)

public void deletePhoto(int pos){
    Toast.makeText(thisActivity, "delete index:"+pos , Toast.LENGTH_SHORT).show();
    mylist.remove(pos);
    setupListView();
}

问题是,这种方式做了一个新的mylist实例,它给了我一个outofbounds错误。如何正确执行此操作以便我获取当前活动并相应地更新它?

1 个答案:

答案 0 :(得分:0)

如果您不想要静态方法,可以在界面中创建。

public interface DeleteInterface {
    public void deletePhoto(int position);
}

然后在适配器的构造函数中......

private DeleteInterface mInterface;

public CustomListAdapter(/* other paramaters */ DeleteInterface interface) {
    // other assignments
    mInterface = interface;
}

然后在你的活动......

public class Photos extends Activity implements DeleteInterface {
    // your code here

    public void deletePhoto(int pos) {
        // your method here
    }
}

但请确保在创建适配器时,您有一个指向当前Activity的指针并将其传递给Adapter的构造函数。

最后但并非最不重要......

在适配器中,请致电mInterface.deletePhoto(position);以调用您的活动方法。