2014-01-24 2 views
0

Я раздуваю EditText и I setId(i++) | static int i = 0;Как я могу узнать, сколько добавляет пользователь EditText?

и это код:

buttonAdd.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View arg0) { 




      LayoutInflater layoutInflater = 
        (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      final View addOne = layoutInflater.inflate(R.layout.row, null); 
      final EditText textOut = (EditText)addOne.findViewById(R.id.textout); 
      Button buttonRemove = (Button)addOne.findViewById(R.id.remove); 
      buttonRemove.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        ((LinearLayout) addOne.getParent()).removeView(addOne); 


       } 
      }); 

      container.addView(addOne); 
       textOut.setId(i++); }}); 

так, если я добавить EditText, Ид будет 0 и если добавить еще EditText, Ид будет 1 .. и т.д.

поэтому пользователь может выбрать, сколько EditText он хочет, не так ли?

если пользователь добавить 3 EditText, например

Как может мой код знает?

, например, если я хочу суммировать все значения EditText, и пользователь добавить 3 EditTixt

Я сделаю

(EditText one = (EditText)findViewById(0)) + (EditText dodo = (EditText)findViewById(1)) + (EditText dodo = (EditText)findViewById(2)) 

Но, если я не знаю, как много EditTixt в пользователь добавит! что я могу сделать?

спасибо.

+0

Имейте петлю вместо добавления отдельно –

+0

Ваше приложение действительно уже знает, сколько «EditText» добавляет пользователь из 'static int i'. Вам просто нужен цикл (например, 'for-loop'). Изменить: кстати, вы знаете, что ваш код для добавления значения 'EditText' неверен, правильно? –

+0

@AndrewT. Спасибо, брат, на самом деле я это делаю, «EditText one = (EditText) findViewById (0); String one_1 = one.getText(). toString();' – Prince

ответ

0
int count = 0; 
int childcount = container.getChildCount(); 
for (int i=0; i < childcount; i++){ 
     View v = container.getChildAt(i); 
     if(view.getTag.equals("edittext"){ 
     count ++; 
    } 

} 

и изменить эту строку в коде

final View addOne = layoutInflater.inflate(R.layout.row, null); 
    addOne.setTag("edittext"); 

счет возвращение вам полное EditText добавляемого пользователя

+0

В первый раз я добавляю EditText, ваш код говорит мне, что я добавляю '2' EditText !!, но если я удалю EditText и добавлю его снова, ваш код скажет мне, что я добавляю' 1', что это правильно. Зачем ! – Prince

+0

проверить мой отредактированный код –

+0

это дает мне ошибку для 'view' в строке' 5' – Prince

0

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

Сначала вам необходимо внести изменения в свой код, как это, и это сработало со мной штраф:

final ViewGroup addOne = (ViewGroup) layoutInflater.inflate(R.layout.test, null); 

int count = 0 ; 
    for (int i = 0; i < addOne .getChildCount(); i++) { 

     if(addOne .getChildAt(i).getClass().getSimpleName().equals("EditText")) 
      count ++ ; 
    } 
+0

, она дает мне '0' каждый раз, я не знаю почему! – Prince

+0

где вы помещаете этот код? –

+0

в вашем коде вы прикрепляете edittext для просмотра addOne, поэтому вам нужно просто изменить addOne вместо контейнера в коде выше –

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