的“ArrayAdapter”没有被设置

问题描述:

我试图在ListView添加String而是创建一个ArrayAdapter对象收到此错误时:的“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); 

初始化列表,做这样的

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); 
      } 
     }); 
+0

但我想从'EditText'中取一个字符串,然后每次点击'Button'时将它添加到'ListView'。 –

+0

所以我选择在'Button'的'onClickListener'中创建'ArrayAdapter'。但'ArrayAdapter'为'this'参数引发错误。错误'不能转换为Context'。 –

+0

也加入这一行listArray = new ArrayList();和干净的项目,然后运行 –

尝试使用这种方法。首先,您必须初始化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); 

      } 

     } 
    }); 

}