2012-05-09 8 views
0

私はJava/Android開発の初心者です。私はviewflipperの中に質問/回答を動的に構築しているので、各フリップがいくつかの回答で新しい質問をします。今、私のXMLファイルでは、私はフリッパービューを持っています。以下のコードはX個の[放射グループと[4つの無線要素]]を持つ線形レイアウトを作成します。私の質問は、フリッパーの「現在の」可視ウィンドウに基づいて選択したラジオボタンを取得するにはどうすればいいですか?Java Androidを使用すると、flipperview内の動的オブジェクトにアクセスする方法はありますか?

for (DataQuizQuiz quiz_question : PLT.dataQuiz.getQuiz_data()) { 
    LinearLayout ll = new LinearLayout(this); 
    ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
         LayoutParams.FILL_PARENT)); 
    ll.setOrientation(LinearLayout.VERTICAL); 
    RadioGroup rg = new RadioGroup(this); 

    TextView tv_answer = new TextView(this); 
    tv_answer.setText("Question: " + quiz_question.getQuestion()); 
    ll.addView(tv_answer); 

    for (DataQuizAnswers answer : quiz_question.getAnswers()) { 
     RadioButton rb = new RadioButton(this); 
     rb.setText(answer.getAnswer()); 
     rg.addView(rb); 
    } 

    ll.addView(rg); 
    vf_quiz_data.addView(ll); 
} 

私が知っているすべてはvf_quiz_data.getCurrentView()ですが、それを超えて、私は、彼らがIDを持っていないと、オンザフライで作成されているので、その内の要素を参照する方法を知りません。コードはレイアウトを構築するために働きます。私はちょうどその中のデータをどのように参照するか分かりません。助けてくれてありがとう。

更新: 私は可視の視野でラジオグループをターゲットにする方法を思いついたが、よりよい方法が必要だと思う。私はそれがループとしてラジオグループになどカウンター0,1,2のIDが割り当てられ、これを用いた無線族元素をキャプチャ:

int selected = (int) ((RadioGroup) 
vf_quiz_data.getCurrentView().findViewById(
    vf_quiz_data.getDisplayedChild())).getCheckedRadioButtonId(); 
RadioButton b = (RadioButton) findViewById(selected); 
Log.v("DEBUG",(String) b.getText()); 

私もカウンターのオフに基づいて、どのように安全に割り当てるのIDを確認していませんです。誰かがこれをやり遂げる別の方法を持っているなら、私に知らせてください。

答えて

0

友人から私のデータのカスタムビューまたはビューをビルドして、vf_quiz_data.getCurrentView()を使用して自分のメソッドからアクセスできるようになりました。一連の試行錯誤の後、私はテストの例を得ました。私のカスタムクラスは "ViewQuiz"と呼ばれ、クラスにビューを追加したedittextの値を返すgetName()というメソッドを追加しました。私はこのようにそれを取得できるようになった:(ViewQuiz) vf_quiz_data.getCurrentView()).getName()。私のクラスはlinearlayoutを拡張し、その内部にedittextを作成して、クラスの新しいインスタンスをループで作成し、addViewとともにviewflipperに追加しました。包みこれは、ここで他の誰かのために役に立つ例です:

public class ViewQuiz extends LinearLayout { 

public EditText name; 

public ViewQuiz(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    name = new EditText(context); 

    name.setText("This is a test"); 
    addView(name); 
} 

public ViewQuiz(Context context) { 
    super(context); 
    name = new EditText(context); 
    name.setText("This is a test"); 
    addView(name); 
} 

public String getName() { 
    return name.getText().toString(); 

} 

} 

ViewQuiz test; 
for (loop stuff here) { 
     test = new ViewQuiz(this); 
     test.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
     // vf_quiz_data = (ViewFlipper) findViewById(R.id.vf_quiz_data); 
     vf_quiz_data.addView(test); 
} 

// get text from visible view 
(ViewQuiz) vf_quiz_data.getCurrentView()).getName() 
関連する問題