可以使用自定义的Adapter
Spinner使用案例:
package com.example.spinner; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.ArrayAdapter; import android.widget.Spinner; public class MainActivity extends Activity { private String[] colors = {"赤","橙","黄","绿","青","蓝","紫"}; private Spinner spi; private ArrayAdapter<String> adapter; private void setupView(){ spi = (Spinner)findViewById(R.id.spinner1); adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,colors); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spi.setAdapter(adapter); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setupView(); } }
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/container" android:orientation="vertical" > <Spinner android:id="@+id/spinner1" android:layout_width="fill_parent" android:layout_height="40dp"/> </LinearLayout>
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/container" android:orientation="vertical" > <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="50dp"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:layout_width="40dp" android:layout_height="40dp" android:src="@drawable/ic_launcher" android:scaleType="fitCenter" android:layout_marginRight="20dp" /> <TextView android:id="@+id/tvColor_CN" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1.0" android:layout_gravity="center_vertical" android:textSize="18sp"/> <TextView android:id="@+id/tvColor_EN" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1.0" android:layout_gravity="center_vertical" android:textSize="18sp"/> </LinearLayout>
对象:
package com.example.spinner1; public class ColorName { private String name_cn; private String name_en; public String getName_cn() { return name_cn; } public void setName_cn(String name_cn) { this.name_cn = name_cn; } public String getName_en() { return name_en; } public void setName_en(String name_en) { this.name_en = name_en; } }
自定义适配器:
package com.example.spinner1; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class MyAdapter extends BaseAdapter { private List<ColorName> mList; private Context mContext; public MyAdapter(Context mContext, List<ColorName> mList) { this.mList = mList; this.mContext = mContext; } @Override public int getCount() { // TODO Auto-generated method stub return mList.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return mList.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder = null; if(convertView == null){ LayoutInflater inflater = LayoutInflater.from(mContext); convertView = inflater.inflate(R.layout.item, null); holder = new ViewHolder(); holder.tvName_CN = (TextView)convertView.findViewById(R.id.tvColor_CN); holder.tvName_EN = (TextView)convertView.findViewById(R.id.tvColor_EN); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } ColorName c= mList.get(position); holder.tvName_CN.setText(c.getName_cn()); holder.tvName_EN.setText(c.getName_en()); return convertView; } class ViewHolder{ private TextView tvName_CN; private TextView tvName_EN; } }
主界面:
package com.example.spinner1; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.Spinner; public class MainActivity extends Activity { private Spinner spinner1; private MyAdapter adapter; private ArrayList<ColorName> getColorNames(){ ArrayList<ColorName> names = new ArrayList<ColorName>(); String[] color_name_cn = {"赤","橙","黄","绿","青","蓝","紫"}; String[] color_name_en = {"Red","Orange","Yellow","Green","Cyan","Blue","Violet"}; for(int i=0;i<7;i++){ ColorName name = new ColorName(); name.setName_cn(color_name_cn[i]); name.setName_en(color_name_en[i]); names.add(name); } return names; } private void setupView(){ spinner1 = (Spinner)findViewById(R.id.spinner1); adapter = new MyAdapter(this,getColorNames()); spinner1.setAdapter(adapter); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setupView(); } }