2017-04-20 90 views
0

在我的項目中,有一個按鈕,它使用foor循環根據用戶添加的編號以編程方式創建Edittex,並且我不知道如何獲取每個人的值。我的問題是獲取以編程方式創建的Edittext的值

如何獲取我創建的組件的值 以編程方式?

任何建議,以及預先得到讚賞。

private void setChoices() { 

     layout = (LinearLayout) findViewById(R.id.linearLayout); 
     params = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.MATCH_PARENT, 
       LinearLayout.LayoutParams.WRAP_CONTENT); 
     params.gravity = Gravity.CENTER; 
     int marginPixel = 1; 
     int marginPixell = 5; 
     float densityy =getResources().getDisplayMetrics().density; 
     int marginDp = (int)(marginPixel * densityy); 
     int margin = (int)(marginPixell * densityy); 
     params.setMargins(marginDp, margin, marginDp, margin); 


     int num= Integer.parseInt(choicesNumberEDT.getText().toString()); 


     for (int i = 0; i < num; i++) { 

      explanationED= new EditText(this); 
      explanationED.setLayoutParams(params); 
      layout.addView(explanationED); 
      explanationED.setGravity(Gravity.TOP); 
      explanationED.setHint("أكتب هنا....."); 
      explanationED.setTextSize(14); 
      explanationED.setId(i); 
      float density = getResources().getDisplayMetrics().density; 
      int paddingDp = (int) (Const.paddingPixel * density); 
      explanationED.setBackgroundColor(Color.parseColor("#B2E3CC")); 
      explanationED.setPadding(paddingDp, paddingDp, paddingDp, paddingDp); 

     } 


    } 
+0

你是什麼意思「我不知道如何得到他們每個人的價值」?你有int num = Integer.parseInt(choicesNumberEDT.getText()。toString());獲得用戶輸入的號碼。 –

+0

我的意思是以編程方式創建edittext –

+0

您將使用explainED.getText()。toString;就像你在 –

回答

0

我想你想獲得動態創建的EditTexts的值。您目前替換每個創建的EditText實例。試試下面的代碼:

 List<EditText> editTextList = new ArrayList<>(); 

     private void setChoices() { 

     layout = (LinearLayout) findViewById(R.id.linearLayout); 
     params = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.MATCH_PARENT, 
       LinearLayout.LayoutParams.WRAP_CONTENT); 
     params.gravity = Gravity.CENTER; 
     int marginPixel = 1; 
     int marginPixell = 5; 
     float densityy =getResources().getDisplayMetrics().density; 
     int marginDp = (int)(marginPixel * densityy); 
     int margin = (int)(marginPixell * densityy); 
     params.setMargins(marginDp, margin, marginDp, margin); 


     int num= Integer.parseInt(choicesNumberEDT.getText().toString()); 


     for (int i = 0; i < num; i++) { 

      EditText explanationED= new EditText(this); 
      explanationED.setLayoutParams(params); 
      editTextList.add(explanationED); //<-------new line here 
      layout.addView(explanationED); 
      explanationED.setGravity(Gravity.TOP); 
      explanationED.setHint("أكتب هنا....."); 
      explanationED.setTextSize(14); 
      explanationED.setId(i); 
      float density = getResources().getDisplayMetrics().density; 
      int paddingDp = (int) (Const.paddingPixel * density); 
      explanationED.setBackgroundColor(Color.parseColor("#B2E3CC")); 
      explanationED.setPadding(paddingDp, paddingDp, paddingDp, paddingDp); 

     } 


    } 


private EditText getText(int position) { 
    return editTextList.get(position).getText().toString(); 
} 

或者如果你不想保持EditTexts的列表,您可以設置每個EditText上一個標籤,您創建使用:

editText.setTag("tag"); 

,並在以後檢索使用:

layout.findViewWithTag("tag"); 
+0

很多thannnnnnnnks,這正是我想要的,我已經更新了privateTextText getText(int position)to >>>>> private String getttext(int position)。 –

+0

沒問題@Nanamedo,盡情享受吧! –

0

在當你創建一個新的對象每一次循環中,你將其賦值給同EditText對象explanationED。這就是爲什麼每當你想getText()explanationED對象,你將永遠得到最後EditText的文字。
對於這種情況,
讓我們考慮一個長度爲NEditTextList,然後給id到各列表項的 - EditText。現在從這些ID's您可以獲得任何EditText對象的值。

//e.g 
list.get(i).getText().toString(); //getting value via index 

//you may search for a specific Id. 
for(EditText text: list) { 
    if(text.getId() === MY_ID) { 
    // do something.. 
    } 
} 
+0

謝謝,薩米爾,我已經使用了飢餓的Androider的解決方案 –

相關問題