質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.10%

Androidアプリを作成することになりました。50問あるクイズアプリを作成しようと思うのですが一覧リストのようなものからクリックして問題を選ぶことは可能でしょうか?

解決済

回答 1

投稿

  • 評価
  • クリップ 2
  • VIEW 5,147

3buro

score 31

現在、Android Studio1.2でクイズアプリを作成しています。

Top/Menu/問題というように画面が遷移する仕組みを作りました。
この問題をtextデータ(別データ)で管理して問題画面で読み込むようにしています。
現在はtextデータの一番上にある問題が読み込まれます。

イメージ説明][WI![イメージ説明
↑Menu画面でボタンをクリックしたら、別データで管理している該当番号にリンクさせる方法はありますか?


そもそも、50問ものクイズを管理する方法として適している形はどのようなものが良いですか?


頑張って完成させたいと思っていますので、何か助言などをいただけると大変助かります。

よろしくお願いいたします。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

1. Menu画面を出す時にtextデータから問題の配列を作成
2. ボタンをクリックした時に配列の番号を決定して対応する問題を呼び出し,問題画面を呼び出す

ファイルの読み書きはまだ私もきちんと把握仕切れていないので断片的なアドバイスになりますが・・・・
タブで区切るよりカンマで区切ったほうが扱いやすいかと思います.
そして問題用のクラスを用意します(仮にQuestionとします).
Questionでは問題文と選択肢を入れるフィールドを用意しておきます.
public class Question implements Serializable{
    String question;
    String[] answers;
}
さらに,ArrayList<Question>を用意しておきます(長さが変えられる配列のようなクラスです.問題数固定なら最初からQuestionの配列で十分かも).
//Menu画面にて
ArrayList<Question> list = new ArrayList<Question>();
//または
Question[] list = new Question[50];
ファイルから行ごとに読み込みQuestionオブジェクトを作成し,ArrayListに追加していきます.これをファイルの最後に到達するまで繰り返します.
ここは私もまだしっかり理解していないので,ここを参照してください→テキストファイルを読む
そしてボタンごとにonClickListenerのonClickで,Aがクリックされたら0,Bなら1,という具合に値を設定して,その値でArrayListなり配列なりから問題を取り出し,問題画面を起動します.
//ボタンを置いたActivityにリスナーを実装し,それをボタンにセットした前提で書きます
public void onClick(View v){
    int i = -1; //仮に初期化しておく
    //ボタンに設定したidで場合分け(ここでは適当に書いている)
    switch(v.getId()){
        case R.id.a:
            i = 0;
            break;
        case R.id.b:
            i = 1;
            break;
            ・
            ・
            ・
    }
    Intent intent = new Intent(this, ***.class); //***は,問題画面を出すActivityの名前
    intent.putExtra("Question", list.get(i)); //ArrayListの場合.配列ならlist[i]
    startActivity(intent); //問題画面を出す
}

移動先のActivityで送った問題を取り出して処理します.
Question question = (Question)getIntent().getSerializableExtra("Question");

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/05/12 18:24

    回答ありがとうございます。
    大変恐れ入りますが、問題の配列を作成するための記述例や
    クリックしたときに配列の番号を決定して問題を呼び出す具体的なコード例など
    おわかりになりますでしょうか?

    キャンセル

  • 2015/05/12 18:26

    問題のtextデータはどのような形式で記述していますか?

    キャンセル

  • 2015/05/12 18:31

    What is A? A0 A1 A2 A3
    What is B?  B0 B1 B2 B3
    のようにタブで区切って問題と回答を表示させています。
    これがC→Dというようにどんどん下の行に追加している方式をとっています。

    キャンセル

  • 2015/05/12 19:08

    詳しいコードの記述、ありがとうございました!!
    この記述を試してみたいと思います。
    参照リンクの提示もありがとうございました。きちんと勉強したいと思います!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • トップ
  • Androidに関する質問
  • Androidアプリを作成することになりました。50問あるクイズアプリを作成しようと思うのですが一覧リストのようなものからクリックして問題を選ぶことは可能でしょうか?