问题
I have listgender.xml
file like this:
<gender>
<sex>male</sex>
<sex>female</sex>
</gender>
This is spinner_data.xml
for spinner:
<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" />
This is 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;
}
}
My spinner can get data from XML, but it not male or female.
It shows noname.test.ClassGender@53531c1f
and noname.test.ClassGender@53531d74
how to fix it?
回答1:
thats the garbage value you getting.
try this method instead of setting values through adapter programiticaly.
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"
/>
来源:https://stackoverflow.com/questions/38180145/cant-load-data-properly-from-xml-file-to-spinner