Удалить из архива - PullRequest
       1

Удалить из архива

1 голос
/ 30 октября 2011
My code is this:

    public class startgame extends Activity implements OnClickListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.level1);

        final Random rgenerator = new Random();       

        //setup the questions
        List<String> questions1 = new ArrayList<String>();
        questions1.add("Who is the actual CEO at Apple?");
        questions1.add("Who is the actual CEO at Microsoft?");
        questions1.add("Android is made by:");

        String thequestion = questions1.get(rgenerator.nextInt(questions1.size()));

        TextView question = (TextView)findViewById(R.id.textView1);
        question.setText(thequestion);

        questions1.remove(thequestion);

        //Initialise the button variables
        Button button1 = (Button)findViewById(R.id.button1);
        Button button2 = (Button)findViewById(R.id.button2);
        Button button3 = (Button)findViewById(R.id.button3);
        Button button4 = (Button)findViewById(R.id.button4);

        if (thequestion.equals("Who is the actual CEO at Apple?")) {
            List<String> questions1res = new ArrayList<String>();
            questions1res.add("Steve Jobs");
            questions1res.add("Steven Sinofsky");
            questions1res.add("Tim Cook");
            questions1res.add("Steve Ballmer");

            button1.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button1.getText());
            button2.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button2.getText());
            button3.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button3.getText());
            button4.setText(questions1res.get(rgenerator.nextInt(questions1res.size())));
        questions1res.remove(button4.getText());
        }
    }

public void onClick(View v) {

        switch (v.getId()){
        case R.id.button1:
        case R.id.button2:
        case R.id.button3:
        case R.id.button4:
        }
}
}

Что делает этот идентификатор: Выберите 1 вопрос из этого списка вопросов.Создайте кнопки, поместите выбранный вопрос в строку и покажите эту строку на экране.Если эта строка «Кто на самом деле является генеральным директором в Apple?»затем случайным образом поместите Стива Джобса и все эти ответы на кнопки.

Что мне нужно, так это: если пользователь нажимает кнопку, которая содержит: «Тим Кук», то: Удалите «Кто является настоящим генеральным директором Apple?из списка вопросов, и случайно выбрал другой вопрос из списка вопросов ArrayList, и случайно разместил ответы на кнопках (то же самое, что я уже сделал, просто это другой вопрос).

Моя проблема в том, что яна самом деле не могу получить доступ к массиву, чтобы удалить его, потому что все, что я получил, это случай, когда кнопка нажата. Я пытался создать функцию, но каждый раз, когда я выполняю функцию, список всегда воссоздается ....

Может кто-нибудь исправить код для меня?И добавить, чего не хватает?

Ответы [ 2 ]

0 голосов
/ 30 октября 2011

Поместите код, отображающий случайный вопрос, в новый метод (назовем его displayNewQuestion () ), и пусть questions1 будет полем вашего класса Activity. displayNewQuestion сможет использовать массив вопросов для всей деятельности, а обработчик кликов может удалить из него вопрос.

0 голосов
/ 30 октября 2011

Попробуйте изменить область действия ArrayList (например, используйте закрытый член), чтобы разрешить доступ с помощью метода onClick ... Я предполагаю, что вам придется сделать то же самое с вашим адаптером, чтобы настроить его под свои нужды.

Обновление:

Быстрая и грязная реализация (без адаптера или ViewHolder, и т. Д. ):

package com.stackoverflow.randomarray;

import java.lang.String;
import java.util.List;
import java.util.ArrayList;
import java.util.Random;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class SoRandomArray extends Activity implements View.OnClickListener {
    private Random mRandom = new Random();
    private List<String> mQuestionsList;
    private String mCurrentQuestion = null;
    private List<String> mAnswersList;

    TextView mQuestionTv;
    Button mButton1;
    Button mButton2;
    Button mButton3;
    Button mButton4;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mQuestionsList = new ArrayList<String>();
        mAnswersList = new ArrayList<String>();

        initQuizData();

        mQuestionTv = (TextView)findViewById(R.id.textView1);
        // Retrieve the buttons declared by the xml layout
        mButton1 = (Button)findViewById(R.id.button1);
        mButton2 = (Button)findViewById(R.id.button2);
        mButton3 = (Button)findViewById(R.id.button3);
        mButton4 = (Button)findViewById(R.id.button4);

        mButton1.setOnClickListener(this);
        mButton2.setOnClickListener(this);
        mButton3.setOnClickListener(this);
        mButton4.setOnClickListener(this);

        shuffle();
    }

    private void initQuizData() {
        mQuestionsList.add("Who is the actual CEO at Apple?");
        mQuestionsList.add("Who is the actual CEO at Microsoft?");
        mQuestionsList.add("Android is made by:");

        mAnswersList.add("Steve Jobs");
        mAnswersList.add("Steven Sinofsky");
        mAnswersList.add("Tim Cook");
        mAnswersList.add("Steve Ballmer");
    }

    private void shuffle() {
        mCurrentQuestion = mQuestionsList.get(mRandom.nextInt(mQuestionsList.size()));
        mQuestionsList.remove(mCurrentQuestion);
        mQuestionTv.setText(mCurrentQuestion);

        mAnswersList.add("Steve Jobs");
        mAnswersList.add("Steven Sinofsky");
        mAnswersList.add("Tim Cook");
        mAnswersList.add("Steve Ballmer");
        mButton1.setText(mAnswersList.get(mRandom.nextInt(mAnswersList.size())));
        mAnswersList.remove(mButton1.getText());
        mButton2.setText(mAnswersList.get(mRandom.nextInt(mAnswersList.size())));
        mAnswersList.remove(mButton2.getText());
        mButton3.setText(mAnswersList.get(mRandom.nextInt(mAnswersList.size())));
        mAnswersList.remove(mButton3.getText());
        mButton4.setText(mAnswersList.get(mRandom.nextInt(mAnswersList.size())));
        mAnswersList.remove(mButton4.getText());
    }

    private boolean validateAnswer(String question, String answer) {

        if(question.equals("Who is the actual CEO at Apple?")) {
            if(answer.equals("Tim Cook")) {
                return true;
            } else {
                return false;
            }
        } else if (question.equals("Android is made by:")) {
            return false;
        } else if (question.equals("Who is the actual CEO at Microsoft?")) {
            if(answer.equals("Steve Ballmer")) {
                return true;
            } else {
                return false;
            }
        }

        return false;
    }

    public void onClick(View v) {
        Toast toast;

        if(validateAnswer(mCurrentQuestion, ((Button)findViewById(v.getId())).getText().toString())) {
            toast = Toast.makeText(this, "Good!", Toast.LENGTH_SHORT);
        } else {
            toast = Toast.makeText(this, "Too bad!", Toast.LENGTH_SHORT);
        }

        if(mQuestionsList.size()>0) {
            toast.show();
            shuffle();
        } else {
            toast.show();
        }
    }
}

связанный макет main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              >
  <TextView
      android:id="@+id/textView1"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="Hello World, SoRandomArray"
      />
  <Button
      android:id="@+id/button1"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:text=""
       />
  <Button
      android:id="@+id/button2"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:text=""
           />
  <Button
      android:id="@+id/button3"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:text=""
       />
  <Button
      android:id="@+id/button4"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:text="" />
</LinearLayout>

Вам придется исправить некоторые проблемы с рандомизацией кнопок, это не современно, но это идея, и она даст вам старт...

...