我虽然有点懒,但是想把碎知识整理下以免自己以后给忘了。也希望给初学者提供写帮助。
由于这是本人闲着手写的, 可能有些不规范,请见谅。
Spinner
1.spinner
1.Xml 布局:
<Spinner
android:id="@+id/
spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
2.在Strings中声明一个数组
<string-array name="
spinner_array">
<item>小明</item>
<item>小花</item>
<item>小草</item>
</string-array>
3.创建一个ArrayAdapter的步骤
//通过createFromResource创建一个Arrayadpter
ArrayAdapter<CharSequence>
adapter = ArrayAdapter.createFromResource(context,
R.array.spinner_array,R.android.layout.simple_spinner_item);
//当然
R.android.simple_spinner_item这个样式也可以自定义 例如:
R.layout.spinner_item
adapter.setDropDownResource(R.android.layout.simple_spinner_dropdown_item);
4.创建一个Spinner的步骤
Spinner spinner = context.findViewById(
R.id.spinner);
spinner.setAdapter(
adapter);
spinner.setPrompt("人名");
//设置 Spinner的默认显示item
5.给Spinner绑定监听
spinner.setOnSelectedItemListener(new OnItemSelectedListener(){
@Override
public void onItemSelectd(AdapterView<?> adapterView,View view,int position,long id){
//第一个参数 被选中的目录 第二个参数被选中的条目得View 第三个参数 被选中的条目的位置 第四个参数 被选中的条目的id
adapterView.getItemAtPosition(position).toString();
//获得当前被选中的Item上的Value
}
@Override
public void OnNothingSelectd(AdapterView<?> parent){
//当没有任何条目被选中时
}
});
R.layout.spinner_item
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:textColor="@color/positionMsg_textcolor"
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/White"
android:layout_marginBottom="2dp"
android:padding="5dip">
</TextView>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:textColor="@color/positionMsg_textcolor"
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/White"
android:layout_marginBottom="2dp"
android:padding="5dip">
</TextView>
以上整体看来是在Spinner的数据来源都是Strings中的静态数据,若是向Spinner中注入动态数据 例如:一个list集合
有两种方法;
1.ArrayAdapter
ArrayAdapter<CharSequence>
adapter
= ArrayAdapter.createFromResource(context,
R.layout.spinner_item,
R.id.
text1,list)
2.那便自定义一个Adapter继承BaseAdpter
Public class MyAdapter extends BaseAdapter{
private List<Object> list;
Context context;
public MyAdapter(List<Object>
list,Context context ){
this.list = list;
this.context = context;
}
@Override
public void getCount(){
return list != null?list.size:0;
}
@Override
public Object getItem(int position){
retuen list.get(position);
};
@Override
public long getItemId(){
return position;
}
@Override
public void getView(int position,View convertview,ViewGroup parent){
ViewHolder holder = null;
if(covertview!=null){
holder = new ViewHolder();
covertview = LayoutInflater.from(context).inflater(R.layout.spinner_item);
holder.tv_name = convertview.findViewById(R.id.text1);
}else {
holder = (ViewHolder)convert.getTag();
}
holder.tv_name.setText(getItem(position).getXXX());
}
Private class ViewHolder{
TextView tv_name;
}
}