我正在做一个应用程序,其中的想法是该程序从列表中为我提供一个,两个,三个或四个随机结果。我的意思是,用户选择多少个口味,例如一个,两个,三个或四个,然后基于口味列表,程序提取选定数量的随机数。因此,如果我选择两个,结果将得到两个随机口味。如果我选择三种,三种随机口味,等等。
问题是我不知道如何继续。我是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) {
}
}
}
}
答案 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;
}
}