Spinner的运用

来源:互联网 发布:局域网怎样破解mac上网 编辑:程序博客网 时间:2024/04/30 20:19
我虽然有点懒,但是想把碎知识整理下以免自己以后给忘了。也希望给初学者提供写帮助。偷笑
由于这是本人闲着手写的, 可能有些不规范,请见谅。
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>
以上整体看来是在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;
  }

1 0