2016-11-07 7 views
1

ここに、私はwebserviceから得たいくつかのデータに基づいてsomeviewsを作成するレイアウトがあります。いくつかのedittexts、textviews、スピナーなどがあります。ダイナミックに作成されたスピナーから価値を引き出すには?

私はそれを埋めるために私はそれを記入し、サーバーに再度データを送信する必要がありますので、私はレイアウトとオプションをcrete。

私はスピナーの上に物を置くこのため

、イムこのスレッドで提案されているアダプタを使用して https://stackoverflow.com/a/8116756/6323705

私の問題は終わりスピナーの値を取得する方法ですか?なぜなら私がこれを使用すると、最終的なスピナー値が保存されるだけで、レイアウトごとに私は4つまたは5つのスピナーがすべて異なるようになるからです。

はこのようなものを使用してイムをレイアウトからデータを取得し、それを送信するには:

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

はい、私はスピナーの作成を使用すると、最後のスピナーの値をレイアウトに保存するだけです。 すべてのデータを取得しようとするときに使用すると、それは動作しません。 –

+0

あなたは:vは決してSpinnerのインスタンスではありませんか? – greenapps

答えて

0

私はアプリで同じ要件を持っています。私はこれを使用し、うまく動作します。

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

このリストにはすべてのダイナミックビューが含まれます。

ダイナミックスピナーを作成しているので、ダイナミックスピナーを定義するときは、そのコードにこの行を追加してください。

spinner.setOnItemSelectedListener(this); 

とオーバーライドmetod中:文字列 '項目は' の値を持つ

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

@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()。getOptPriceDiff(); getOptPriceDiff(); 私はその行について説明できますか?よくまた、私は問題がアダプタだと思う、私はビューを作成するとき、アダプターは最後の配列を含んでいますSPinnerを埋め込むために使用Im –

+0

sp1vは、それぞれのスピナーからのスピナー項目値を含む文字列値です。ここで、noOfViewsは選択されたスピナーの数である。 Sは現在選択されているスピナーです。その位置に従ってArrayListから値を取得します。 –

0

あなたはスピナーのための作り付けのメソッドをオーバーライドすることができますがonItemSelected

例と呼ばれます選択されたスピナー項目のお役に立てれば!

関連する問題