2017-04-20 9 views
0

私のプロジェクトには、ユーザーが追加する数字に応じてプログラムで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

私は、動的に作成されたEditTextの値を取得したいと思います。あなたは現在、それぞれの作成時に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、これは私が欲しいものです、私は個人的なEditText getText(int位置)を>>>>> private String getttext(int position)に更新しました。 –

+0

いいえ問題は@Nanamedo、楽しい! –

0

新しいオブジェクトを作成し、ループ内のたび、あなたは同じEditTextオブジェクトexplanationEDにそれを割り当てています。このため、getText()からexplanationEDオブジェクトに変更する場合は、常に最後のEditTextのテキストが表示されます。 EditText - このシナリオでは

はのは、リスト項目のそれぞれにidを与え、ListNEditTextのを考えてみましょう。今度は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

ありがとう、サミール、私は飢えたアンドロイダーのソリューションを使用している –

関連する問題