-1

//Code for json response and parsing

private void ListQuestion() {
        try {
            if (FriendZoneSelectFriendsWith.choose_gender.equals("Boy")) {
                NAME_JSON = "boysquestion.json";
            } else {
                NAME_JSON = "girlsquestion.json";
            }
            BufferedReader jsonReader = new BufferedReader(new InputStreamReader(getAssets().open(NAME_JSON)));
            StringBuilder jsonBuilder = new StringBuilder();
            for (String line = null; (line = jsonReader.readLine()) != null; ) {
                jsonBuilder.append(line).append("\n");
            }

            // Parse Json
            JSONTokener tokener = new JSONTokener(jsonBuilder.toString());
            JSONArray jsonArray = new JSONArray(tokener);

            Log.e("JSON LENGTH-->", jsonArray.length() + "");

            final Integer[] arr = new Integer[jsonArray.length()];
            for (int i = 0; i < arr.length; i++) {
                arr[i] = i;
            }
            Collections.shuffle(Arrays.asList(arr));
            Log.e("RANDOM", Arrays.asList(arr) + "");

            for (int i = 1; i < jsonArray.length(); i++) {
                jo_inside = jsonArray.getJSONObject(i);
                question = jo_inside.getString("question");

                for (int j = 1; j <= 25; j++) {
                    if (i == Arrays.asList(arr).get(j)) {
                        Log.e("Details-->", jo_inside.getString("question"));
                        question1 = jo_inside.getString("question");
                        tvQuestionText.setText(question1);

                        //Change question on click
                        imUp.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                for (int k = 1; k <= 25; k++) {
                                    if (k == Arrays.asList(arr).get(k)) {
                                        Log.d("textview", tvQuestionText.getText().toString());
                                        tvQuestionText.setText(question1);
                                    }

                                }
                            }
                        });
                        //    Log*/.d("Textview", tvQuestionText.getText().toString());
                    }


                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (Exception e) {
        }
    }

//Json Response-

Details-->﹕ Does he message you asking for advice?
10-21 02:52:40.157    7878-7878/? E/Details-->﹕ Has he ever sent you multiple messages in a row?
10-21 02:52:40.157    7878-7878/? E/Details-->﹕ Has he rang you crying over a girl?
10-21 02:52:40.157    7878-7878/? E/Details-->﹕ When you see him, do his text habits for others match what he is doing with you?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Are you waiting days for a response to a text message?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Does he send you message telling you he is thinking about you or similar?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Does he comment on your Facebook but not write back to your text messages?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Does he use social media to contact you rather than phone?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Has he ever has a photo with you as his profile picture?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Has his friends started randomly adding you on Facebook or followed you on Instagram/Twitter?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Does he ask you to hold his stuff regularly?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Has he burped in front of you?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Has he farted in front of you?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Does he listen when you speak?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Do you leave your friends to go and hang out with him and his friends?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Have you been on multiple dates with her?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Did he get dressed up for the date?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Did you talk about deep things on the date?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Did you insist on paying, only for him not to let you?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Did you he drop you home?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ When you dropped her home, did he linger in the car for a long time?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Did he take a photo and post it online while you were on your date?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Do his friends talk to you?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Have you ever sent him a thoughtful gift/message and he has not said thank you/responded?
10-21 02:52:40.168    7878-7878/? E/Details-->﹕ Has he ever asked you to cook for him?

I want to get random questions and then set it to textview after button click. How can i get random question on button click. Help me with sample code. i have tried things but none works.

ThomasThiebaud
  • 11,331
  • 6
  • 54
  • 77
Nik Patel
  • 627
  • 7
  • 21

1 Answers1

1

You can put all your questions in a List and them access an random element in this list.

Using randInt(int min, int max) from this thread to get a random number between range, you can do (not tested)

List<String> questions = new ArrayList<>();
//Add elements to the list of questions
//questions.add(...);
//questions.add(...);

if(!questions.isEmpty())
    String randomQuestion = questions.get(randInt(0,questions.size());

EDIT Each time you are clicking on the button, you need to get aother random question from your list.

So using your code you have to do something like (not tested)

//Initialize list of questions
List<String> questions = new ArrayList<>();
for (int i = 1; i < jsonArray.length(); i++) {
    jo_inside = jsonArray.getJSONObject(i);
    question = jo_inside.getString("question");
    questions.add(question);
}

//On click get another random question from list
imUp.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if(!questions.isEmpty()) {
            String randomQuestion = questions.get(randInt(0,questions.size());
            tvQuestionText.setText(randomQuestion );
        }
    }
});

and the random method from this thread

/**
 * Returns a pseudo-random number between min and max, inclusive.
 * The difference between min and max can be at most
 * <code>Integer.MAX_VALUE - 1</code>.
 *
 * @param min Minimum value
 * @param max Maximum value.  Must be greater than min.
 * @return Integer between min and max, inclusive.
 * @see java.util.Random#nextInt(int)
 */
public static int randInt(int min, int max) {

    // NOTE: This will (intentionally) not run as written so that folks
    // copy-pasting have to think about how to initialize their
    // Random instance.  Initialization of the Random instance is outside
    // the main scope of the question, but some decent options are to have
    // a field that is initialized once and then re-used as needed or to
    // use ThreadLocalRandom (if using at least Java 1.7).
    Random rand;

    // nextInt is normally exclusive of the top value,
    // so add 1 to make it inclusive
    int randomNum = rand.nextInt((max - min) + 1) + min;

    return randomNum;
}
Community
  • 1
  • 1
ThomasThiebaud
  • 11,331
  • 6
  • 54
  • 77