如何在 Android Studio 中使用 ArrayAdapter<String> 作为 OnClickListener?
How to use ArrayAdapter<String> inside as OnClickListener in Android Studio?
我想在单击按钮时填充我的 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);
Error:(62, 53) error: no suitable constructor found for
ArrayAdapter(,int,ArrayList)
constructor ArrayAdapter.ArrayAdapter(Context,int,int,List) is
not applicable (actual and formal argument lists differ in length)
constructor ArrayAdapter.ArrayAdapter(Context,int,List) is not
applicable (actual argument cannot be
converted to Context by method invocation conversion) constructor
ArrayAdapter.ArrayAdapter(Context,int,int,String[]) is not applicable
(actual and formal argument lists differ in length) constructor
ArrayAdapter.ArrayAdapter(Context,int,String[]) is not applicable
(actual argument cannot be converted to
Context by method invocation conversion) constructor
ArrayAdapter.ArrayAdapter(Context,int,int) is not applicable (actual
argument cannot be converted to Context by
method invocation conversion) constructor
ArrayAdapter.ArrayAdapter(Context,int) is not applicable (actual and
formal argument lists differ in length)
实例化ArrayAdapter
如下:
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(ActivityName.this,
android.R.layout.simple_list_item_1,your_array_list);
this
的含义与您使用它的地方不同,因此参数类型不匹配。在构造函数中使用 ActivityName.this
而不仅仅是 this
,其中 ActivityName
是包含该代码的 activity 的名称。
声明一个全局上下文,在 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);
我想在单击按钮时填充我的 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);
Error:(62, 53) error: no suitable constructor found for ArrayAdapter(,int,ArrayList) constructor ArrayAdapter.ArrayAdapter(Context,int,int,List) is not applicable (actual and formal argument lists differ in length) constructor ArrayAdapter.ArrayAdapter(Context,int,List) is not applicable (actual argument cannot be converted to Context by method invocation conversion) constructor ArrayAdapter.ArrayAdapter(Context,int,int,String[]) is not applicable (actual and formal argument lists differ in length) constructor ArrayAdapter.ArrayAdapter(Context,int,String[]) is not applicable (actual argument cannot be converted to Context by method invocation conversion) constructor ArrayAdapter.ArrayAdapter(Context,int,int) is not applicable (actual argument cannot be converted to Context by method invocation conversion) constructor ArrayAdapter.ArrayAdapter(Context,int) is not applicable (actual and formal argument lists differ in length)
实例化ArrayAdapter
如下:
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(ActivityName.this,
android.R.layout.simple_list_item_1,your_array_list);
this
的含义与您使用它的地方不同,因此参数类型不匹配。在构造函数中使用 ActivityName.this
而不仅仅是 this
,其中 ActivityName
是包含该代码的 activity 的名称。
声明一个全局上下文,在 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);