从ArrayList中检索随机对象:不兼容的类型

时间:2019-02-14 08:42:43

标签: java

我正在尝试从ArrayList中获取随机基数: 编辑:完整代码:

    public class MainActivity extends AppCompatActivity {

    private Random randomGenerator;

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

        final ArrayList<Base> baseArrayList = new ArrayList<Base>();
        Base baseOne = new Base("Grüner Salat");
        Base baseTwo = new Base("Gemischter Salat");
        Base baseThree = new Base("Rüeblisalat");
        Base baseFour = new Base("Eisbergsalat");

        baseArrayList.add(baseOne);
        baseArrayList.add(baseTwo);
        baseArrayList.add(baseThree);
        baseArrayList.add(baseFour);

        Button mixSaladBtn = (Button) findViewById(R.id.mixSaladBtn);
        mixSaladBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                TextView baseTextView = (TextView) findViewById(R.id.baseTextView);

                String baseDisplay =  getRandomBase(baseArrayList);
                baseTextView.setText(baseDisplay);
            }
        });

        ArrayList<Ingredient> ingredientArrayList = new ArrayList<Ingredient>();

    }

    public String getRandomBase(ArrayList<Base> baseArrayList){
        int index = randomGenerator.nextInt(baseArrayList.size());
        Base randomBase = baseArrayList.get(index);
        System.out.println(randomBase);
        return randomBase.getIngredientName();
    }
}

当我在onClick方法中调用方法getRandomBase时,应用程序崩溃。不知何故我没有从baseArrayList.get(index);找回基础 最终编辑:我有2个错误。第一个是一开始我使用的是原始类型。非常感谢您的澄清! 第二个错误是我必须移动Random randomGenerator()的声明;

2 个答案:

答案 0 :(得分:0)

您的问题在于发送原始arraylist的方法。所以它不知道它是什么数据类型。可以通过两种方式修复

1。投射

Base randomBase = (Base) baseArrayList.get(index);
  1. 发送方法类型

    public String getRandomBase(List<Base> baseArrayList){
    

    }

答案 1 :(得分:-1)

尝试

public String getRandomBase(ArrayList<Base> baseArrayList){...