Spinner 实现key value 效果

  在使用Spinner进行下拉列表时,我们一般都会使用字符串数组的方式加ArrayAdapter,取到的列表值就是我们所看到的Text。如果我们想实现网页中select <option value=""></option>这种效果,看到的和取到的值是不一样的怎么办?

方法有好几种,以下是最简单的方法:

1:首先定义一个类:ZxType.java

public class ZxType {
    public String key;    //用于显示
    public String value;//用于数据操作
    
    public ZxType(String key,String value){
        this.key = key;
        this.value = value;
    }
    
    public String toString(){
        return key;
    }
}

2:ZxzxActivity.java

public class ZxzxActivity extends Activity {
    private Spinner spZxzxType = null;
    private ArrayAdapter<ZxType> adapter = null;
    private ZxType zxTypeArr[] = null;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zxzx);
        
        spZxzxType = (Spinner)findViewById(R.id.spZxzxType);
        
        getZxTypeArr();
        
        adapter = new ArrayAdapter<ZxType>(
                this,
                android.R.layout.simple_spinner_item,
                zxTypeArr
            );
        
        spZxzxType.setAdapter(adapter);
        
        spZxzxType.setOnItemSelectedListener(listener);
    }
    private OnItemSelectedListener listener = new OnItemSelectedListener(){
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            ZxType zxtype = (ZxType)spZxzxType.getSelectedItem();
            String value = zxtype.value;
            Toast.makeText(ZxzxActivity.this, value, Toast.LENGTH_SHORT).show();
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            
        }
    };
    
    
    private void getZxTypeArr(){
        zxTypeArr = new ZxType[]{
                new ZxType("咨询类别",""),
                new ZxType("重点税源模块","cc9890ee22ceff760122df0473210110"),
                new ZxType("普通发票类","4028801b1c0bfe55011c0bfe89300002"),
                new ZxType("专用发票类","4028801b1c0bfe55011c0bfea3310003"),
                new ZxType("个体税收类","4028801b1c0bfe55011c0bfecc940004"),
                new ZxType("税务登记类","4028801b1c0bfe55011c0bfeea2f0005"),
                new ZxType("涉税资料填写类","4028801b1c0bfe55011c0bfeea2f0006"),
                new ZxType("增值税类","4028801b1c0bfe55011c0bfeea2f0007"),
                new ZxType("消费税类","4028801b1c0bfe55011c0bfeea2f0008"),
                new ZxType("所得税类","4028801b1c0bfe55011c0bfeea2f0009"),
                new ZxType("外商投资企业所得税类","4028801b1c0bfe55011c0bfeea2f0010"),
                new ZxType("进出口税收类","4028801b1c0bfe55011c0bfeea2f0011"),
                new ZxType("减免税类","4028801b1c0bfe55011c0bfeea2f0012"),
                new ZxType("税收法规类","4028801b1c0bfe55011c0bfeea2f0013"),
                new ZxType("其他类","4028801b1c0bfe55011c0bfeea2f0014"),
                new ZxType("纳税申报类","4028801b1c0bfe55011c0bfeea2f0015"),
                new ZxType("车辆购置税","4028801b1c0bfe55011c0bfeea2f0016"),
                new ZxType("利息税","4028801b1c0bfe55011c0bfeea2f0017")
        };
    }}

3:activity_zxzx.xml

<LinearLayout 
        android:layout_marginTop="8dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView 
            android:layout_width="50dp"
            android:layout_height="wrap_content"
            android:text="类别"/>
        <Spinner 
            android:id="@+id/spZxzxType"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/corner_edit"/>
    </LinearLayout>
原文地址:https://www.cnblogs.com/yshyee/p/3424862.html