(Android)微调按钮和随机结果?

时间:2018-12-30 01:24:20

标签: android

我正在做一个应用程序,其中的想法是该程序从列表中为我提供一个,两个,三个或四个随机结果。我的意思是,用户选择多少个口味,例如一个,两个,三个或四个,然后基于口味列表,程序提取选定数量的随机数。因此,如果我选择两个,结果将得到两个随机口味。如果我选择三种,三种随机口味,等等。

问题是我不知道如何继续。我是Android新手,找不到答案。谢谢!

这是我尝试过的:

    Spinner sp;

TextView display_data;

String gustos [] = {"Uno","Dos","Tres","Cuatro"};

ArrayAdapter<String> adapter;

Random random = new Random();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gustos_aleatorios);

    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

    sp = (Spinner) findViewById(R.id.spinner3);
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, gustos);

    display_data = (TextView)findViewById(R.id.display_result);



    sp.setAdapter(adapter);

    sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {

            switch (position) {
                case 0:
                    for(int i = 0; i < 1 ; i++){


                    }
                    break;
                case 1:
                    for(int i = 0; i < 2 ; i++){

                    }
                    break;
                case 2:
                    for(int i = 0; i < 3 ; i++){

                    }
                    break;
                case 3:
                    for(int i = 0; i < 4 ; i++){

                    }
                    break;


            }
        }
        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    }


    }

}

2 个答案:

答案 0 :(得分:0)

很简单。例如,当您选择2时,您应该生成2种随机口味。

因此您会生成2个随机变量,范围从0到风味列表的大小:

List<String> flavors = new ArrayList<String>(){{
    add("flavor 1");
    add("flavor 2");
    add("flavor 3");
    add("flavor 4");
    add("flavor 5");
}};

然后我选择2:

for(int i = 0 ; i < 2 ; i++)
{
    int random = new Random().nextInt(flavors.size()); // generate random between 0 and flavors.size()
    String randomSelectedFlavor = flavors.get(random);
}

答案 1 :(得分:0)

一个简单的解决方案是,每当您需要获取n种随机口味时,首先要洗牌您的口味列表,然后选择前n种口味。您可以创建这样的函数

my-input

并像这样使用它

public static <T> List<T> getRandomSubList(List<T> list, int n) {
    //create a new list if you don't want the original list to get shuffled
    list = new ArrayList<T>(list);
    //shuffle the list
    Collections.shuffle(list);
    //return first n elements of the list
    return list.subList(0, n);
}

或者也许是这样

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
    switch (position) {
        case 0:
            randomFlavors = getRandomSubList(flavors, 1);        
            break;
        case 1:
            randomFlavors = getRandomSubList(flavors, 2);
            break;
        case 2:
            randomFlavors = getRandomSubList(flavors, 3);
            break;
        case 3:
            randomFlavors = getRandomSubList(flavors, 4);
            break;
    }
}