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



我很难弄清楚如何在当前活动中简单地从类(不是活动)中调用和运行方法。

我当前的代码:

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);
        }
    });

照片.java(我当前的活动类)

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

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

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

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
    }
}

但是,请确保在创建Adapter时,有一个指向当前"活动"的指针,并将其传递给Adapter的构造函数。

最后但同样重要的是。。。

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

最新更新