您的位置:首页 > 移动开发 > Android开发

Android 接口回调

2014-08-25 18:07 288 查看
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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 回调接口