私のアプリケーションでは、質問のリストがArrayListに格納されており、1つの質問を表示し、質問に回答した後、次の質問に進むダイアログを表示したいと思います。私が現在行っている方法(ループを繰り返す)は機能していません。これは、すべてのダイアログを一度に重ねるだけで、他の多くの問題が発生するためです。私が探しているのは、質問を繰り返し処理する方法ですが、リスト内の各質問が完了するまで、ダイアログのレイアウトを毎回変更するだけです。誰かがこれを実行する方法についての良い指針を私に与えることができますか?
3 に答える
タイトルとメッセージをパラメータとしてダイアログを表示する関数を作成できます。
showDialog(String title, String message){ // Show dialog code here}
そのダイアログの応答ボタンのリスナー内で、arrayListが終了するまで反復する別の関数(showQuestion(currentQuestion))を呼び出します。
int currentQuestion=0;
ArrayList<QuestionObject> questionList;
showQuestion(int i){
if(i<questionList.size()){
showDialog(questionList.get(i).getTitle,questionList.get(i).getMessage);
currentQuestion++;
}else{
//quiz is over
}
}
1つのレイアウト(XML内で作成されたmain.xml)を変更したいだけだと思います。これを行うには、作業しているクラスがそのレイアウトを指していることを確認してください。そこから(ユーザーが回答を送信するときにイベントリスナーを使用すると仮定して)、次のように必要に応じてdoを変更できます。
TextView txt = (TextView) findViewById(R.id.textView); // references the txt XML element
イベントリスナーで、答えが正しければ変更します(iを最初に0に設定されたグローバル変数にします)。
if(i<arrayList.size()){
txt.setText(arrayList.get(++i));
}else{
txt.setText("You Finished");
}
そこから、elseステートメントで、arrayListsを変更し、iを0にリセットできます。
ポジティブ、ニュートラル、ネガティブボタンを使用しようとしている場合。次に、複数のダイアログで問題が発生する可能性があります。独自のTextViews、ListViews、およびButtonsを使用してカスタマイズされたレイアウトを定義してみてください。通常のレイアウトのように、リスナーやその他すべてを実装できます。次に、カスタマイズしたレイアウトをを介してダイアログに渡しますAlertDialog.Builder.setView()
。
PS現在行っていることのコード例を含めると、曖昧さの少ない回答を提供できます。