2016-11-07 6 views
1

Вот что, у меня есть макет, где я создаю некоторые виды в соответствии с некоторыми данными, которые я получаю из веб-службы. Есть некоторые edittexts, textviews, spinners и т. Д.Как получить значение от динамически созданного счетчика?

Его вид опроса, поэтому после того, как я создаю макет и параметры, я должен заполнить его и отправить данные на сервер снова.

Для этого я ставлю объекты на блесны, Im помощью адаптера предложил в этой теме https://stackoverflow.com/a/8116756/6323705

Моя проблема заключается в том, как получить значения счетчик в конце? Потому что, когда я использую этот

mySpinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, 
       int position, long id) { 

      User user = adapter.getItem(position); 
      // Here you can do the action you want to... 
      //BUT I DONT NEED TO DO ANYTHING HERE, I NEED TO DO IT AFTER ALL FIELDS ARE FULL 
     } 
     @Override 
     public void onNothingSelected(AdapterView<?> adapter) { } 
    }); 

он сохраняет только последние значения счетчика, и на макет у меня есть как 4 или 5 блесен всех Дифференцев.

Чтобы получить данные из макета, а затем отправить его Im используя что-то вроде этого:

int childs = parent.getChildCount(); 
    for(int i=0;i <= childs;i++){ 
     View v=parent.getChildAt(i); 
     if (v instanceof EditText) { 
      EditText et = (EditText) v; 
      //then save the data in an special Array 
     } 
      else if (v instanceof TextView) { 
       TextView tv = (TextView) v; 
       //save it in an other Array 
      } 

      else if (v instanceof Spinner) { 
      Spinner sp = (Spinner) v; 
      //putting OnItemSelectedListener here is not working either 
      } 

Как я могу это сделать?

+0

Пробовал ли вы 'String text = sp.getSelectedItem(). ToString();'? – greenapps

+0

Да, когда я использую это создание счетчика, он сохраняет значение последнего счетчика на макете. Когда я использую его, когда пытаюсь получить все данные, он не работает, потому что он никогда не входит в эту точку для somereason. –

+0

Вы имеете в виду: v никогда не является экземпляром Spinner? – greenapps

ответ

0

У меня такое же требование в приложении, и я пользуюсь этим и прекрасно работаю.

List<View> allVIEWS=new ArrayList<>(); 
int spinnerValue=0; 

Этот список содержит все динамические виды.

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

spinner.setOnItemSelectedListener(this); 

и коррекции Metod:

@Override 
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
     spinnerValue=0; 
     for (int noOfViews = 0; noOfViews < itemDetailses.getOption().size(); noOfViews++) { 
      if (itemDetailses.getOption().get(noOfViews).getOptType().equals("-2")) { 
       Spinner s = (Spinner) allVIEWS.get(noOfViews); 
       sp1v = itemDetailses.getOption().get(noOfViews).getValues().get(s.getSelectedItemPosition()).getOptPriceDiff(); 
       spinnerValue+=Integer.parseInt(sp1v); 
      } 
     } 

    } 
+0

sp1v = itemDetailses.getOption(). Get (noOfViews) .getValues ​​(). Get (s.getSelectedItemPosition()). GetOptPriceDiff(); Не могли бы вы объяснить мне эту строку? Я не понимаю ее довольно Что ж.Кроме того, я думаю, что проблема заключается в адаптере, когда я создаю Views, адаптер содержит последний массив Array Im, используемый для заполнения SPinner. –

+0

sp1v - это строковое значение, которое содержит значение элемента spinner из соответствующего счетчика. Здесь noOfViews - количество выбранных счетчиков. S - это счетчик, который в настоящее время выбран. Затем получите значение из ArrayList в соответствии с этой позицией. –

0

Вы можете переопределить встроенный метод Spinner называется onItemSelected

Пример:

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    final String item = parent.getItemAtPosition(position).toString(); 
} 

Строка 'элемент' имеет значение выбранного элемента прядильной машины. Надеюсь это поможет!