You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何将自定义ArrayList数据应用到LuckyWheel幸运转盘

解决方案

你只需要将原有代码中硬编码的转盘内容替换为你从Intent拿到的自定义字符串列表即可,修改步骤如下:

  • 首先对拿到的Item列表做非空判断,避免空指针崩溃
  • 将原有固定循环12次生成转盘数据的逻辑,改为遍历自定义字符串列表生成对应LuckyItem
  • 调整随机索引生成逻辑适配动态列表长度,避免索引越界
  • 简化选中回调的冗余判断代码

修改后的完整代码如下:

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import androidx.appcompat.app.AppCompatActivity;
import rubikstudio.library.LuckyWheelView;
import rubikstudio.library.model.LuckyItem;

public class Game extends AppCompatActivity {

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

        ArrayList<String> Item = getIntent().getStringArrayListExtra("key");
        // 增加空判断避免崩溃
        if (Item == null || Item.isEmpty()) {
            Toast.makeText(this, "未获取到自定义转盘数据", Toast.LENGTH_SHORT).show();
            finish();
            return;
        }

        LuckyWheelView luckyWheelView = findViewById(R.id.wheel);
        List<LuckyItem> data = new ArrayList<>();
        // 遍历自定义列表生成转盘项
        for (int i = 0; i < Item.size(); i++) {
            LuckyItem luckyItem = new LuckyItem();
            // 把自定义字符串赋值给转盘项的文本
            luckyItem.secondaryText = Item.get(i);
            data.add(luckyItem);
        }

        luckyWheelView.setData(data);
        luckyWheelView.setRound(getRandomRound());
        luckyWheelView.setLuckyWheelBackgrouldColor(R.array.color_wheel);

        Button playBtn = findViewById(R.id.play);
        playBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int index = getRandomIndex(data.size());
                luckyWheelView.startLuckyWheelWithTargetIndex(index);
            }
        });
        luckyWheelView.setLuckyRoundItemSelectedListener(new LuckyWheelView.LuckyRoundItemSelectedListener() {
            @Override
            public void LuckyRoundItemSelected(int index) {
                // 去掉冗余的if判断,直接通用处理所有索引
                Toast.makeText(getApplicationContext(), data.get(index).secondaryText, Toast.LENGTH_LONG).show();
            }
        });
    }
    private int getRandomRound() {
        Random rand = new Random();
        return rand.nextInt(5) + 8;
    }

    // 修改随机索引方法,传入当前列表长度适配动态数据
    private int getRandomIndex(int listSize) {
        Random rand = new Random();
        // 索引范围从0到列表长度减1,避免越界
        return rand.nextInt(listSize);
    }
}

内容的提问来源于stack exchange,提问作者Ruslan Emelianov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:15:01