[在Android Studio中使用ListView时无法解析构造函数ArrayAdapter

问题描述 投票:0回答:4

我有一个活动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"));
                                    }
                                }
                            }
                        });

请帮助...

java android android-listview
4个回答
1
投票

错误显示您将android view.View.OnClickListener作为第一个参数。

我知道您说过您已经尝试过,但是您确实需要使用Mainactivity.this。如果它不起作用,请发布您的java文件开始的代码。

您的活动也命名为Mainactivity吗?还记得它是区分大小写的,应该是MainActivity吗?如果是这样,则必须使用MainActivity.this


0
投票

我认为是因为您的课程实现了onclicklistener。那么,您可以尝试将this强制转换为Activity吗?像下面的代码:

listAdapter = new ArrayAdapter((Activity)this, android.R.layout.simple_list_item_1, android.R.id.text1, value);

0
投票

ArrayAdapter需要Context作为第一个参数。您可以做的是对Context进行字段引用,如下所示。

  1. [向活动添加字段,private Context mContext;
  2. 在您的Activity的onCreate()内部,mContext = this;
  3. 使用mContext构造ArrayAdapter,listAdapter = new ArrayAdapter(mContext, android.R.layout.simple_list_item_1, android.R.id.text1, value);

0
投票

也许这会帮助您:

listAdapter = new ArrayAdapter(MainActivity.this,
                               android.R.layout.simple_list_item_1,
                               android.R.id.text1,
                               Collections.singletonList(value));
© www.soinside.com 2019 - 2024. All rights reserved.