如何获取布局中动态添加的spinner的内容?

如何获取布局中动态添加的spinner的内容?,第1张

Android的listview和spinner等组件都采用了MVC模式来 *** 作数据,也就是说,不能直接调用组件类的方法(如add或其他类似的方法)来添加、删除数据。而要通过一个Adapter对象(SimpleAdapter、ArrayAdapter等)来完成这个工作。ListView相当于MVC中的V(视图层),用来显示数据。Adapter对象相当于C(控制层),用来将数据(数组、List)与ListView连接在一起。因此, *** 作数据需要在Adapter对象中进行。如果列表项很复杂,可以自定义Adapter类(一般从BaseAdapter类继承)。然后在Adapter类中添加相应的增加、删除等方法。当然,也可以直接更改数据源(数组或List对象),然后调用Adapter类的notifyDataSetChanged方法来通知Adapter对象数据已经改变。ListView或Spinner会自动更新相应的列表项。最近在写一本关于Android开发的书,里面详细介绍了这个过程,并提供了大量的例子以供参考。

所使用的工具:电脑

开发工具: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 = 0i<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)

Android的下拉列表是用Spinner 这个类来实现的。

Spinner的使用(分别使用ArrayAdapter和自定义Adapter实现),使用ArrayAdapter进行适配数据:

1:首先定义一个布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<Spinner

android:id="@+id/spinner1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

/>

</LinearLayout>

2:建立数据源,使用数组,这些数据将会在Spinner下来列表中进行显示:

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string-array name="spinnername">

<item>北京</item>

<item>上海 </item>

<item>广州</item>

<item>深圳</item>

</string-array>

</resources>

3:接着在Activity中加入如下的代码(使用了系统定义的下拉列表的布局文件,当然也可以自定义)

// 初始化控件

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

// 建立数据源

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

// 建立Adapter并且绑定数据源

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

//绑定 Adapter到控件

mSpinner.setAdapter(_Adapter)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11831723.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存