无法将数据从xml文件正确加载到Spinner [英] Can't load data properly from xml file to Spinner

查看:108
本文介绍了无法将数据从xml文件正确加载到Spinner的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的listgender.xml文件:

<gender>
    <sex>male</sex>
    <sex>female</sex>
</gender>

这是微调器的spinner_data.xml:

<TextView android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/tv_spinner"
    android:textColor="#ff0004"
    android:textSize="14sp"
    xmlns:android="http://schemas.android.com/apk/res/android" />

这是ClassGender:

public class ClassGender {
    private String sex;
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
}

这是活动保留"微调框:

this is Activity hold spinner :

Spinner sp;
Button bt;
TextView tv;

static final String KEY_SEX = "sex";

List<ClassGender> spList = null;

String sex;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_4);

    sp = (Spinner) findViewById(R.id.spinner_t4);
    try {
        XmlPullParserSpinner parser_Emp = new XmlPullParserSpinner();
        spList = parser_Emp.parse(getAssets().open("listgender.xml"));

        ArrayAdapter<ClassGender> adapter = new ArrayAdapter<ClassGender>(this,
                R.layout.spinner_data, spList);
        sp.setAdapter(adapter);

        tv = (TextView)findViewById(R.id.tv_T4);
        bt = (Button)findViewById(R.id.bt_T4);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String text = sp.getSelectedItem().toString();
                tv.setText(text);
            }
        });

    }
    catch (Exception e){
        e.printStackTrace();
    }

}

public class XmlPullParserSpinner {

    private ClassGender c_g;
    private String text;

    public XmlPullParserSpinner() {
        spList = new ArrayList<ClassGender>();
    }

    public List<ClassGender> parse(InputStream is) {
        XmlPullParserFactory factory = null;
        XmlPullParser parser = null;
        try {
            factory = XmlPullParserFactory.newInstance();
            factory.setNamespaceAware(true);
            parser = factory.newPullParser();
            parser.setInput(is, null);
            int eventType = parser.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT) {
                String tagname = parser.getName();
                switch (eventType) {
                    case XmlPullParser.START_TAG:
                        if (tagname.equalsIgnoreCase(KEY_SEX)) {
                            c_g = new ClassGender();
                        }
                        break;
                    case XmlPullParser.TEXT:
                        text = parser.getText();
                        break;
                    case XmlPullParser.END_TAG:
                        if (tagname.equalsIgnoreCase(KEY_SEX)) {
                            spList.add(c_g);
                            c_g.setSex(text);
                        }
                        break;
                    default:
                        break;
                }
                eventType = parser.next();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return spList;
    }
}

我的微调器可以从XML获取数据,但不能从男性或女性获取数据.

My spinner can get data from XML, but it not male or female.

它显示noname.test.ClassGender@53531c1fnoname.test.ClassGender@53531d74
该如何解决?

It shows noname.test.ClassGender@53531c1f and noname.test.ClassGender@53531d74
how to fix it?

推荐答案

这就是您获得的垃圾值.

thats the garbage value you getting.

尝试方法,而不是通过适配器编程来设置值.

try this method instead of setting values through adapter programiticaly.

您可以在string.xml中定义字符串数组,并在布局文件中将其设置为spinner

you define string array in string.xml and set it to spinner in your layout file like this

<Spinner 
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
        android:entries="@array/array_name"
    />

这篇关于无法将数据从xml文件正确加载到Spinner的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆