Android --关于Spinner/Context

Spinner

dropdown菜单

  1. 在布局文件中
<Spinner
	android:entries="@array/choices"	//or @string/array_choices
	android:spinnerMode="dropdown"	//or dialog
/>

entries指明该Spinner的数据来自资源数组choices,这个资源数组可定义在"array.xml",也可定义在"string.xml"。
spinnerMode设定选择菜单的模式:dropdown(下拉菜单)、dialog(弹出菜单)

  1. 设置Spinner的Adapter

1) 初始化控件:Spinner spinner = findViewById(R.id.label_spinner);
2) 建立数据源:String[] mItems = getResources().getStringArray(R.array.choices);
3) 建立Adapter:ArrayAdapter < String > adapter = new ArrayAdapter< String >(this,android.R.layout.simple_spinner_item,mItems);
并绑定数据源:adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
注:android.R.layout.simple_spinner_item指(未展开菜单时)系统自带的内置布局
android.R.layout.simple_spinner_dropdown_item指下拉菜单时的样式
4)绑定Adapter到控件:

spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener(){
	@Override
	public void onItemSelected(AdapterView<?> parent,View view,int pos,long id){
	String spinnerLabel = parent.getItemAtPosition(i).toString();
	//
	}

	@Override
	public void onNothingSelected(AdapterView<?> parent){}
});

可以自定义Adapter,要extends BaseAdapter。


Context

Application/Activity/BroadcastReceiver/Service等都是Context。

getAppliction()
getApplicationContext()

以上两个方法可得到相同的结果,因为Application本身也是一个Context。
但是,只有在Activity和Service才能调用到getApplication(),在BroadcastReceiver要通过调用getApplicationContext()获得Application的实例。

tips:
为避免造成内存泄漏,应正确使用Context:

  1. 当Application的Context能搞定的情况下,并且生命周期长的对象,优先使用Application的Context。
  2. 不要让生命周期长于Activity的对象持有到Activity的引用。
  3. 尽量不要在Activity中使用非静态内部类,因为非静态内部类会隐式持有外部类实例的引用,如果使用静态内部类,将外部实例引用作为弱引用持有。
    学习链接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值