2016-07-04 2 views
0

У меня есть listgender.xml файл, как это:Не удается загрузить данные правильно из XML-файла для Spinner

<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; 
    } 
} 

это счетчик активности:

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, но не мужской или женский.

Показаны [email protected] и [email protected]
как исправить?

+0

Это кажется, что вы добавляете сложности, где проще вещь будет работать. Вы хотите, чтобы ваш счетчик показывал только два варианта: «мужчина» и «женщина»? – Sufian

+0

- это решение? –

ответ

0

thats стоимость мусора, которую вы получаете.

попробуйте this метод вместо того, чтобы устанавливать значения через адаптер программно.

можно определить массив строк в string.xml и установить его на Spinner в файле макета, как этот

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

Я хочу, чтобы данные о загрузке выполнялись из файла xml в папке с ресурсами – 1234abcd

Смежные вопросы