android 里怎么用adapter写下拉菜单选择

发布网友 发布时间:2022-04-20 15:44

我来回答

1个回答

热心网友 时间:2023-07-14 03:20

所使用的工具:电脑

开发工具:eclipse for  Android , Android  Studio

用adapter 写下拉菜单需要我们自己进行自定义,具体步骤如下:


1、自定义类,类成员与需要显示的字段一致;

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;
}
}

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;
}

}

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, ProctManageActivity.this);
参数说明:第一个参数是添加数据源后的List,第二个是当前activity的上下文。
最后一步,向spinner里面添加数据源
mSpinner.setAdapter(madapter);

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com