我有一个活动Mainactivity,在此活动中,当按下按钮时,它将显示一个列表视图。但是在
listAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,android.R.id.text1,value);
我正在获取“无法解析构造函数ArrayAdapter(匿名android view.View.OnClickListener,int,int,java.lang.String)”
我的外部类是“ Mainactivity”,我尝试使用“ Mainactivity.this”而不是“ this”。但是它显示“无法解析构造函数”错误。
MainActivity类扩展了Actionbaractivity实现onItemelectedListner
我的代码是:
ok.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if(cnt.getText().toString().length() > 0 &&
number.getText().toString().length() > 0 &&
Integer.parseInt(number.getText().toString()) > 0 &&
Integer.parseInt(cnt.getText().toString()) > 0) {
number.requestFocus();
String[] value = new String{"hello","world"};
try {
temp_count = temp_count + Integer.parseInt(cnt.getText().toString());
count.setText(String.valueOf(temp_count));
temp_amt = temp_amt + (Integer.parseInt(cnt.getText().toString()) * tkt_rate);
amount.setText(String.valueOf(temp_amt));
ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, value);
lstView.setAdapter(listAdapter);
lstView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
SparseBooleanArray checked = lstView.getCheckedItemPositions();
int size = checked.size(); // number of name-value pairs in the array
for (int i = 0; i < size; i++) {
int key = checked.keyAt(i);
boolean value = checked.get(key);
if (value) {
row = lstView.getChildAt(i);
row.setBackgroundColor(Color.parseColor("#33B5E5"));
} else {
row = lstView.getChildAt(i);
row.setBackgroundColor(Color.parseColor("#F0F0F0"));
}
}
}
});
请帮助...
错误显示您将android view.View.OnClickListener
作为第一个参数。
我知道您说过您已经尝试过,但是您确实需要使用Mainactivity.this
。如果它不起作用,请发布您的java文件开始的代码。
您的活动也命名为Mainactivity
吗?还记得它是区分大小写的,应该是MainActivity
吗?如果是这样,则必须使用MainActivity.this
我认为是因为您的课程实现了onclicklistener。那么,您可以尝试将this
强制转换为Activity
吗?像下面的代码:
listAdapter = new ArrayAdapter((Activity)this, android.R.layout.simple_list_item_1, android.R.id.text1, value);
ArrayAdapter需要Context
作为第一个参数。您可以做的是对Context
进行字段引用,如下所示。
private Context mContext;
mContext = this;
listAdapter = new ArrayAdapter(mContext, android.R.layout.simple_list_item_1, android.R.id.text1, value);
也许这会帮助您:
listAdapter = new ArrayAdapter(MainActivity.this,
android.R.layout.simple_list_item_1,
android.R.id.text1,
Collections.singletonList(value));