未设置“ArrayAdapter”

时间:2017-02-04 06:03:37

标签: android android-layout android-studio

我尝试在String中添加ListView,但在创建ArrayAdapter对象时会出现此错误:

Error:(32, 48) error: no suitable constructor found for ArrayAdapter(<anonymous OnClickListener>,int,List)
constructor ArrayAdapter.ArrayAdapter(Context,int,int) is not applicable
(argument mismatch; <anonymous OnClickListener> cannot be converted to Context)
constructor ArrayAdapter.ArrayAdapter(Context,int,String[]) is not applicable
(argument mismatch; <anonymous OnClickListener> cannot be converted to Context)
constructor ArrayAdapter.ArrayAdapter(Context,int,List<String>) is not applicable
(argument mismatch; <anonymous OnClickListener> cannot be converted to Context)

我在这里得到的是<anonymous OnClickListener> cannot be converted to Context,但不知道如何修复它。

我的代码是:

public class MainActivity extends AppCompatActivity {

private ListView listView;
private static List listArray;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listView = (ListView)findViewById(R.id.itemList);
    Button button = (Button)findViewById(R.id.addButton);
    button.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            EditText itemNameView = (EditText)findViewById(R.id.itemName);
            String itemName = itemNameView.getText().toString();
            listArray.add(itemName);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listArray);
            adapter.add(itemName);
            listView.setAdapter(adapter);
        }
    });
}

}

并且从上面的代码中抛出以下行的错误:

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

2 个答案:

答案 0 :(得分:1)

初始化您的列表并执行此操作

 listview = (ListView) findViewById(R.id.listview);
        Button button = (Button)findViewById(R.id.button);

        listArray = new ArrayList();

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EditText edittext = (EditText) findViewById(R.id.edittext);
                listArray.add(edittext.getText().toString().trim());
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(ListviewMainActivity.this, android.R.layout.simple_list_item_1, listArray);
                listview.setAdapter(adapter);
            }
        });

答案 1 :(得分:0)

尝试这种方法可行。首先,您必须初始化ArrayList并创建条件if(!listdata.isEmpty())

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String data = edt.getText().toString();
            ArrayList<String> listdata = new ArrayList<String>();
            listdata.add(data);



            if(!listdata.isEmpty()){
              ArrayAdapter  adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, listdata);
                list.setAdapter(adapter);

            }

        }
    });

}