Android 接口回调

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







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值