无法解析构造函数'ArrayAdapter(匿名android.widget.SeekBar.OnSeekBarChangeListener,int,java.util.ArrayList <java.lang.integer>)

时间:2019-05-16 08:56:02

标签: java android

我对如何剖析此错误消息有误解。我知道这样做的方式更简单,更优雅,但我只是想以此方式帮助理解。我们正在制作一个应用程序,其中使用搜索栏完成时间表。抱歉丢了一大堆代码,但我无法理解它试图告诉我什么。

我们已经制作了一个音频播放器搜索栏和一个用于家庭成员姓名的数组列表。我正在尝试利用有限的经验来创建此应用。为什么这不起作用?

解释越简单越好。在这个阶段不可能光顾。

我读过类似的问题,但并非特定于此问题。例如cannot resolve constructor 'arrayadapter(android.widget.adapterview.onitemselectedlistener, int, java.util.arraylist)'

这是我的代码:

//Define Listview and Seekbar in code
        final ListView listView = (ListView) findViewById(R.id.myListView);
        SeekBar seekBar = (SeekBar) findViewById(R.id.mySeekBar);

        //Set max and min Seekbar and get int
        seekBar.setMax(20);
        seekBar.setMin(1);
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

                //Create Arraylist
                ArrayList<Integer> arrayList = new ArrayList<>();
                for (int i = 1; i < 15; i++){
                arrayList.add(i * progress);

                    //create adapter and set listview
                    ArrayAdapter arrayAdapter = new ArrayAdapter<Integer>(this, android.R.layout.simple_list_item_1, arrayList);
                    listView.setAdapter(arrayAdapter);

            }

2 个答案:

答案 0 :(得分:0)

您使用的上下文不正确,因为在下面的代码中以this创建ArrayAdapter时将引用SeekBar,而不是Activity。使用YourActivity.this而不是仅使用this

 ArrayAdapter arrayAdapter = new ArrayAdapter<Integer>(this, android.R.layout.simple_list_item_1, arrayList);

答案 1 :(得分:0)

new SeekBar.OnSeekBarChangeListener是一个匿名内部类,它在类引用中调用this类而不是您的SeekBar.OnSeekBarChangeListener类中的Activity

这里ArrayAdapter的第一个参数应该是Context,但是在您的情况下,您将传递OnSeekBarChangeListener。因此,您需要使用Activity.this而不是this