Skip to content Skip to sidebar Skip to footer

Remove From Arraylist

My code is this: public class startgame extends Activity implements OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCre

Solution 1:

Put the code that displays a random question in a new method (let's call it displayNewQuestion()) and let questions1 be a field of your Activity class. displayNewQuestion will then be able to use the activity-wide question array, and the click handler can remove a question out of it.

Solution 2:

Try to change the scope of the ArrayList (use a private member for example) to enable access from your onClick method… I assume you'll have to do the same with your adapter to tweak it to your needs.

Update:

A quick-and-dirty implementation (without adapter nor ViewHolder, etc.):

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;

publicclassSoRandomArrayextendsActivityimplementsView.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
    publicvoidonCreate(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();
    }

    privatevoidinitQuizData() {
        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");
    }

    privatevoidshuffle() {
        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")) {
                returntrue;
            } else {
                returnfalse;
            }
        } elseif (question.equals("Android is made by:")) {
            returnfalse;
        } elseif (question.equals("Who is the actual CEO at Microsoft?")) {
            if(answer.equals("Steve Ballmer")) {
                returntrue;
            } else {
                returnfalse;
            }
        }

        returnfalse;
    }

    publicvoidonClick(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();
        }
    }
}

The associated layout main.xml:

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

You'll have to correct some issue with the randomizing of the buttons, that's not state-of-the-art but that's the idea and it will give you a start…

Post a Comment for "Remove From Arraylist"