java - 如何生成不重复的随机布局

标签 java android xml layout

public class Music extends Activity {
    private int [] layouts = {
            R.layout.question_selector,
            R.layout.question_selector2,
            R.layout.question_selector3,
            R.layout.queston_selector4,
            R.layout.question_selector5,
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        int i = layouts.length;
        Random r = new Random();

        while (--i > 0) {
            int j = r.nextInt(i + 1);

            //swap values
            int temp = layouts[j];
            layouts[j] = layouts[i];
            layouts[i] = temp;

        }
        setContentView(layouts[i]);
    }
}

这是我到目前为止所做的:它工作得很好,但我注意到有时某些布局会一遍又一遍地显示。我想要的是,当我按下按钮时,它会随机生成一个布局,下次我再次按下按钮时,它不应该重复之前显示的布局。我怎么能做这样的事呢?

最佳答案

您可以创建一个arrayList,然后shuffle它而不是使用Random的数组,这将使其随机,但每个项目只使用一次

编辑,代码示例:

     ArrayList<int> mArrayList = new ArrayList<int>;
        //OR ArrayList<int> mArrayList = new ArrayList<int>(Arrays.asList(mOrdinaryArray));
     mArrayList.put(R.blabla.blabla);
     mArrayList.put(R.blabla.blablatwo);
     Collections.shuffle(mArrayList);
     Log.d(TAG, "output after shuffle: " + mArrayList);

关于java - 如何生成不重复的随机布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20938314/

相关文章:

java - HikariCP 通过 Oracle 自定义类型

java - 在特定选项卡中启动 Android 应用程序

java - 对 ArrayList<String> 进行排序,排除字符串前半部分的数字

java - 将消息从多个 Activity 传递到主要 Activity

java - 数据和表示分离

在 vim 中读取/编辑 XML 模式?

java - 在 Canvas 上缩放文本大小

android - 从 native 代码在 android 设备屏幕上显示 rgb888 数据

Android自定义对话框高度

xml - XSD 错误 : Character content is not allowed, 因为内容类型为空