Java中回调接口的简单使用

先推荐一个github上的blog集合:https://github.com/ZQiang94/Andriod-collect-blogs

Coding过程中可能会类似于这种的情景,删除ListView指定位置的item,这时候有多种实现方式,可以在适配器中,也可以使用回调的方式,将点击的item的索引回传到ui上,例如Fragment

或者Activity。然后再ui中得到相应item的索引来调用适配器(Adapter)的notifyDataSetChanged方法刷新listView。

要使用回调来实现类似的功能,大体有以下几个部分。具体根据自己实际情况而定。

这里以上面例子中描述的场景使用接口回调的方式来实现。

1.创建回调接口

public interface OnButtonListener {

voidCallBack(int position);

}

2.“接口绑定”

lvAdapter.setOnButtonListener(this);

实际就是将实现接口的实例以参数的形式传到要调用的类中,为此也可以这样写:

lvAdapter.setOnButtonListener(newOnButtonListener() {

@Override

publicvoidCallBack(int position) {

list.remove(position);

lvAdapter.notifyDataSetChanged();

mTextView.setText("当前item个数为:"+ list.size() +"");

}

});

3.实现接口,就是实现前面创建接口的方法,把本应该在另一个类中发生的动作拿到这个方法中实现。

下面这种写法是在接口绑定方法中传递的实现回调接口的类的实例,上面是直接new了一个实例。

故,这两种写法都对。

@Override

publicvoidCallBack(int position) {

list.remove(position);

lvAdapter.notifyDataSetChanged();

}

4.在调用回调接口的类中要创建该回调接口的实例,在绑定接口的方法中初始化。

private OnButtonListener onButtonListener;

publicvoidsetOnButtonListener(OnButtonListener onButtonListener){

this.onButtonListener = onButtonListener;

}

5.有了具体的接口变量,就可以直接调用这个接口变量中的方法,来将要实现的方法回调到实现接口的地方来实现。

btn.setOnClickListener(newView.OnClickListener() {

@Override

publicvoidonClick(View view) {

onButtonListener.CallBack(position);

}

});

上面就是根据例子中的描述,使用java回调来实现的将item View的btn的点击事件回传到ui中来实现。

具体场景可以延伸到其他地方,总之,使用Java回调的地方还是比较多的。

你可能感兴趣的:(Java中回调接口的简单使用)