Spinner下拉选项实现(配置文件方式和自定义adapter方式)

来源:互联网 发布:厦门众途软件 编辑:程序博客网 时间:2024/06/05 10:12

实现方式一.

1.步骤

(1).布局文件中定义相应的Spinner控件。

比较简单就不贴出相应的代码了

(2).定义资源文件

找到resource文件下的Value文件夹下的Strings.xml文件在文件中贴上以下几行代码:

<string-array name="product_status">
        <item>选择状态</item>
        <item>发布</item>
        <item>停用</item>
        <item>待定</item>
    </string-array>

说明:name属性,标识这个数组,相当于Id的作用,item配置选项用于配置需要展示的内容。

(2)activity中相应的代码配置

/**

*声明一个数组将Strings.xml 文件中声明的数组添加到数组中

**/

String[] mItems = getResources().getStringArray(R.array.product_status);

/**

*定义adapter样式并添加数据到adapter

**/

ArrayAdapter<String>  mAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mItems);

/**

*添加adapter数据到spinner

**/

mSpnner2.setAdapter(mAdapter);

//初始化布局定义的Spinner

2.注意事项

第一种方式实现比较简单,是基于eclipse的实现,使用studio的同学可参照编写。

实现方式二.自定义adapter实现spinner下拉选项

1.步骤

1.1:自定义类,类成员与需要显示的字段一致(这里只以需要显示name字段作选项为例)

public class Manufacture {
private String name ;


public Manufacture(String name) {
super();
this.name = name;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


}

1.2:自定义adapter并继承自BaseAdapter实现相应方法,下面是贴出的代码示例:


public class MnufactureAdapter extends BaseAdapter{
private List<Manufacture> mList;
private Context context ;
//创建有参构造,参数需要传入两个1.自定义类类型的List,上下文参数
public MnufactureAdapter(List<Manufacture> mList, Context context) {
super();
this.mList = mList;
this.context = context;
}

//返回长度位所定义List的长度
@Override
public int getCount() {
return mList.size();
}
//返回位置为自定义list当前位置
@Override
public Object getItem(int position) {
return mList.get(position)
;
}
//返回条目的ID
@Override
public long getItemId(int position) {
return position;
}

//这里getView需方法需要重点说明和注意:
@Override
public View getView(int position, View convertView, ViewGroup parent) {

//创建一个LayoutInflater并传入上下文
LayoutInflater linflater = LayoutInflater.from(context);

//添加自定义item布局到convertView;(item内容和样式通过自定义方式实现)
convertView = linflater.inflate(R.layout.spinner_item_layout, null);

//初始化Item中控件
TextView textView =(TextView) convertView.findViewById(R.id.manufacture_list);

//设置控件显示内容
textView.setText(mList.get(position).getName());

return convertView;
}

}

1.3:在activity中需要添加如下代码

//初始化布局文件中的spinner

 Spinner  mSpinner = (Spinner) findViewById(R.id.spinner1);

//初始化自定义的List,并往里面添加数据

List<Manufacture>  manufacture = new ArrayList<Manufacture>();

接着就是添加数据,在项目中我是添加的从网络上下载的数据解析之后进行添加的,具体的添加方式根据具体需要进行添加,我把自己的贴在下面供大家参考:

for(int i = 0;i<list.size();i++){
//添加数据源
manufacture.add(new Manufacture(list.get(i).getName()));
}

//实例化一个之前自定义的adapter并向里面添加数据

MnufactureAdapter madapter = new MnufactureAdapter(manufacture, ProductManageActivity.this);

参数说明:第一个参数是添加数据源后的List,第二个是当前activity的上下文。

最后一步,向spinner里面添加数据源

mSpinner.setAdapter(madapter);

2.注意事项:

上面是按照先后顺序进行编写的实际的开发步骤可以按照这个顺序来。

最后说明:这篇文章文章我是用心在写,尽力做了也难免会出现纰漏,发现的说一下哈,共同进步。

0 0
原创粉丝点击