、 编写 Activity 代码,实现如下功能(40 分) 在“开始抽奖”按钮的单击事件里,完成如下操作: (1)根据输入的抽奖人数 N,随机生成 1-100 之间的 N 个不同的整数,表示获奖人的序号
时间: 2024-03-01 19:54:14 浏览: 66
android中在Activity中响应ListView内部按钮的点击事件的两种方法
可以按照以下方式实现上述功能:
1. 在 `Activity` 的布局文件中添加一个 `EditText` 用于输入抽奖人数,以及一个 `Button` 用于开始抽奖:
```
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/et_count"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="请输入抽奖人数"/>
<Button
android:id="@+id/btn_start"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="开始抽奖"/>
</LinearLayout>
```
2. 在 `Activity` 中获取输入的抽奖人数,并生成随机数序列:
```
public class MainActivity extends AppCompatActivity {
private EditText mEtCount;
private Button mBtnStart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEtCount = findViewById(R.id.et_count);
mBtnStart = findViewById(R.id.btn_start);
mBtnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int count = Integer.parseInt(mEtCount.getText().toString());
if (count <= 0 || count > 100) {
Toast.makeText(MainActivity.this, "请输入1-100之间的抽奖人数", Toast.LENGTH_SHORT).show();
return;
}
Set<Integer> numberSet = new HashSet<>();
Random random = new Random();
while (numberSet.size() < count) {
int number = random.nextInt(100) + 1;
numberSet.add(number);
}
List<Integer> numberList = new ArrayList<>(numberSet);
Collections.shuffle(numberList);
// TODO: 将序列传递给下一个 Activity
}
});
}
}
```
在点击 “开始抽奖” 按钮时,首先获取输入的抽奖人数,如果不在 1-100 的范围内,就给出错误提示并返回。否则,使用 `Set` 来存储随机生成的不同的整数,直到生成了足够数量的数为止。然后将 `Set` 转换为 `List` 并使用 `Collections.shuffle()` 方法随机打乱序列,最后将序列传递给下一个 `Activity`。这里需要注意的是,需要将序列传递给下一个 `Activity`,可以使用 `Intent` 的 `putIntegerArrayListExtra()` 方法实现。具体的代码可以参考下一题的回答。
阅读全文