安卓原生开发_自定义单选列表Spinner绑定自定义数据类型

安卓原生开发_自定义单选列表Spinner绑定自定义数据类型1.

欢迎大家来到IT世界,在知识的湖畔探索吧!

1.写一个类,用来存绑定的数据

public class DictPair {

    private String name;
    private String key;
    private String value;

    public DictPair() {
    }

    public String getName() {
        return name;
    }

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

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return value;
    }
}

欢迎大家来到IT世界,在知识的湖畔探索吧!

安卓原生开发_自定义单选列表Spinner绑定自定义数据类型

我这里,用了id,这个是数据字典的值,其实可以再加一个比较好,比如加一个dictKey,dictValue,然后一个id,这里直接用key表示字典值,用value表示字典的中文描述,用name,表示字典的类型,比如sex,是性别类型,其实这个很多时候用不到,根据自己需要去附加吧.

所以这里的属性,最好是,id,key,value,name 这几个值,这样就好了.这样可以id,表示0,1,2,3..这样表示,spinner中的值是个序号,然后key表示字典中的值,有时候字典中的值,可能是不连续的,不能作为

spinner的序号,所以要加上id,这个序号,这样后面处理起来就方便多了,我因为没有加,后面有单独处理的.

2.然后去写适配器

欢迎大家来到IT世界,在知识的湖畔探索吧!
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.baidu.idl.face.main.domain.DictPair;
import com.baidu.idl.facesdkdemo.R;

import java.util.List;

public class MddSpinnerAdapter  extends BaseAdapter {
    private List<DictPair> mList;
    private Context mContext;

    public MddSpinnerAdapter(Context pContext, List<DictPair> pList) {
        this.mContext = pContext;
        this.mList = pList;
    }

    @Override
    public int getCount() {
        return mList.size();
    }

    @Override
    public Object getItem(int position) {
        return mList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater _LayoutInflater=LayoutInflater.from(mContext);
        convertView=_LayoutInflater.inflate(R.layout.item_mdd_spinner, null);
        if(convertView!=null)
        {
            TextView layout_mdd_docreate_spinner_textview=(TextView)convertView.findViewById(R.id.layout_mdd_docreate_spinner_textview);
            layout_mdd_docreate_spinner_textview.setText(mList.get(position).getValue());
        }
        return convertView;
    }

}

安卓原生开发_自定义单选列表Spinner绑定自定义数据类型

可以看到自己写的适配器也挺简单,就是继承baseadapter,然后重写一些方法就可以了

3.上面用到的xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/layout_mdd_docreate_spinner_textview"
        android:singleLine="true"
        android:layout_gravity="center"
        android:paddingTop="4dp"
        android:textSize="14sp"
        android:textAlignment="center"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

安卓原生开发_自定义单选列表Spinner绑定自定义数据类型

4.这样就可以了可以去使用了.

a.去在xml中添加Spinner

比如:显示性别

欢迎大家来到IT世界,在知识的湖畔探索吧!   <Spinner
                                android:id="@+id/layout_mdd_docreate_spinner_sexSpinner"
                                android:layout_width="match_parent"
                                android:layout_height="40dp"
                                android:layout_margin="5dp"
                                android:background="@drawable/layout_mdd_docreate_ed_hui_r4"></Spinner>

安卓原生开发_自定义单选列表Spinner绑定自定义数据类型

b.然后再去初始化数据:

 String sexResult = YdHttpPostUtils.getDict("sex");
        sexPair = YdCommonUtils.getDictPairs(sexResult,sexPair);
        Spinner layout_mdd_docreate_spinner_sexSpinner  = findViewById(R.id.layout_mdd_docreate_spinner_sexSpinner);
        MddSpinnerAdapter sexAdapter = new MddSpinnerAdapter(this,sexPair);
        layout_mdd_docreate_spinner_sexSpinner.setAdapter(sexAdapter);

安卓原生开发_自定义单选列表Spinner绑定自定义数据类型

可以看到, YdCommonUtils.getDictPairs获取了字典list以后,然后,拿到数据,构建出一个MaddSpinnerAdapter适配器,然后把适配器,设置给xml中的spinner就可以了,这样就初始化完了这个

spinner了.

c.然后根据某个值去显示上次选择的值.

Spinner layout_mdd_docreate_spinner_hunyinzhuangkuang = findViewById(R.id.layout_mdd_docreate_spinner_hunyinzhuangkuang);
  String oneOrtwoKey = dataObj.getString("oneOrtwo");
                

layout_mdd_docreate_spinner_hunyinzhuangkuang.setSelection(getPositionByKey(oneOrtwoPair,Integer.valueOf(oneOrtwoKey)),true);

安卓原生开发_自定义单选列表Spinner绑定自定义数据类型

d.然后获取选择的值.

Spinner layout_mdd_docreate_spinner_sexSpinner = findViewById(R.id.layout_mdd_docreate_spinner_sexSpinner);
                DictPair sexDictPair = (DictPair) layout_mdd_docreate_spinner_sexSpinner.getSelectedItem();
                baseInfo.put("sex",sexDictPair.getKey());
                editor.putString("mdd_usersex",sexDictPair.getKey());

安卓原生开发_自定义单选列表Spinner绑定自定义数据类型

上面这样获取值就可以了,注意上面是单选,所以获取出来是一个item,获取了直接用就可以了.

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/33810.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信