1.定义接口(interface)
a.在操作的class里面写一个接口:
<span style="white-space:pre"> </span>// 回调接口(监听器)
public interface loadListener {
public void onLoad();
}
b.声明回调接口对象
<span style="white-space:pre"> </span>//声明回调接口的对象
<span style="white-space:pre"> </span>private loadListener listener;
c.执行回调方法
调用接口函数吧,让需要响应的Activity执行接口方法(onLoad(){};)-_-#
<span style="white-space:pre"> </span>listener = (loadListener) context;//在调用回调函数之前给其赋值
<span style="white-space:pre"> </span>footer.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
listener.onLoad();//实现回调的功能
}
});
2.实现接口(implements)
a.在需要响应的Activity里实现接口,并重写接口函数:
public class MainActivity extends Activity implements loadListener {
<span style="white-space:pre"> </span>//接口方法,中间省略若干行代码
@Override
public void onLoad() {
arr.add("new");
adpter.notifyDataSetChanged();
}
}
3.源代码:
MainActivity.java:
public class MainActivity extends ActionBarActivity implements loadListener {
MyListView lv;
ArrayList<String> arr;
ArrayAdapter<String> adpter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (MyListView) findViewById(R.id.listView1);
arr = new ArrayList<>();
for (int i = 0; i < 10; i++) {
arr.add(i + "");
}
adpter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,
arr);
lv.setAdapter(adpter);
}
<span style="white-space:pre"> </span>//重写接口方法
@Override
public void onLoad() {
arr.add("new");
adpter.notifyDataSetChanged();
}
}
MyListView.java:
public class MyListView extends ListView {
private View footer;
private loadListener listener;
public MyListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView(context);
}
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
}
public MyListView(Context context) {
super(context);
initView(context);
}
@SuppressWarnings("unused")
private void initView(Context context) {
listener = (loadListener) context;//在调用回调函数之前给其赋值
LayoutInflater inflater = LayoutInflater.from(context);
footer = inflate(context, R.layout.lv_footer, null);
this.addFooterView(footer);
footer.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
listener.onLoad();
}
});
}
// 回调接口(监听器)
public interface loadListener {
public void onLoad();
}
}