【问题标题】:How to use ArrayAdapter<String> inside as OnClickListener in Android Studio?如何在 Android Studio 中使用 ArrayAdapter<String> 作为 OnClickListener?
【发布时间】:2016-09-01 20:06:15
【问题描述】:

我想在单击按钮时填充我的 ListView,但 ArrayAdapter 的构造函数有问题。

当我在“onCreate”方法中使用此代码时,它工作正常,我认为当我在 OnClickListener 中使用 ArrayAdapter 时,“this”关键字会产生此问题。

mybtn = (Button) findViewById(R.id.buttonTest);
myXMLListView=(ListView)findViewById(R.id.xmlListView);

View.OnClickListener myClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            ArrayList<String> your_array_list = new ArrayList<String>();
            your_array_list.add("foo");
            your_array_list.add("bar");

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

            myXMLListView.setAdapter(arrayAdapter);
        }
    };
    mybtn.setOnClickListener(myClickListener);

错误:(62, 53) 错误: 没有找到合适的构造函数 ArrayAdapter(,int,ArrayList) 构造函数 ArrayAdapter.ArrayAdapter(Context,int,int,List) 是 不适用(实际参数列表和形式参数列表的长度不同) 构造函数 ArrayAdapter.ArrayAdapter(Context,int,List) 不是 适用(实际参数不能 通过方法调用转换为Context)构造函数 ArrayAdapter.ArrayAdapter(Context,int,int,String[]) 不适用 (实际参数列表和形式参数列表的长度不同)构造函数 ArrayAdapter.ArrayAdapter(Context,int,String[]) 不适用 (实际参数不能转换为 上下文通过方法调用转换)构造函数 ArrayAdapter.ArrayAdapter(Context,int,int) 不适用(实际 参数不能通过以下方式转换为上下文 方法调用转换)构造函数 ArrayAdapter.ArrayAdapter(Context,int) 不适用(实际和 形式参数列表的长度不同)

【问题讨论】:

    标签: android-studio android-arrayadapter


    【解决方案1】:

    如下实例化ArrayAdapter

    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(ActivityName.this,
                        android.R.layout.simple_list_item_1,your_array_list);
    

    this 的含义在你使用它的地方是不同的,因此参数中存在类型不匹配。在构造函数中使用ActivityName.this 而不是只使用this,其中ActivityName 是包含该代码的活动的名称。

    【讨论】:

      【解决方案2】:

      声明一个全局上下文在 onCreate 中初始化它,然后在 ArrayAdapter 中使用它

      private Context context;
      
      //Inside OnCreate
      context = this;
      

      那么你就可以使用这个上下文了

      ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(context,
                      android.R.layout.simple_list_item_1,your_array_list);
      

      【讨论】:

        猜你喜欢
        • 2020-01-09
        • 1970-01-01
        • 2021-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多