您的位置:首页 > 其它

Spinner控件为例其实是Adaptor构造方式的不同(下拉框控件的使用)

2016-10-12 14:31 429 查看
Spinner控件主要有2种方式太实现下拉框的,下面用demo来介绍:

1、利用String-array来实现的,也是sdk文档中给出的:

spinner = (Spinner) findViewById(R.id.planets_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.newNumber, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//                sob(parent);
sob( view.getClass());//得知是textView控件
TextView v = (TextView) view;
v.setText("haha");
sob(position);
sob(id);
}

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

}
});


主要是实现adapter的方法下面2句:

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.newNumber, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);


第一句中的三个参数分别是:context、String.xml中的<string-array> 和android sdk自带的一种布局格式。

第二句中的参数也是android sdk自带的一种布局文件

String-array

<string-array name="newNumber">
<item>zp</item>
<item>gwl</item>
<item>chb</item>
<item>ych</item>
</string-array>


2、第二种方法:其实主要是Adapter的构造方法的不同,该方法可以动态的添加下拉选项

ArrayList<String> list = new ArrayList<String>();
list.add("zp");
list.add("gwl");
list.add("chb");
list.add("ych");
ArrayAdapter adapter = new ArrayAdapter(this,R.layout.layout,R.id.text1,
list);
spinner.setAdapter(adapter);


该构造方法参数一次是:context,下拉框的每一项样式(是一个布局文件),布局文件中显示的控件的id。最后一个就算list里面存储的不是string类型的东西也会强制转化为string显示。

layout布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text1"
/>
</LinearLayout>


  3、为了自己定义AdaptorArray的样式可以如第二种方式也可以用第三种:

  

ArrayAdapter adapter = new ArrayAdapter(this,R.layout.layout,R.id.text1,
COUNTRIES);

private static final String[] COUNTRIES = new String[] {
"Belgium", "France", "Italy", "Germany", "Spain","Belgiums"
};


  这种方式与第二种类似的,利用布局文件来显示自己设计的下拉样式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: