2017-02-04 117 views
1

我試圖在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); 

回答

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

但我想從'EditText'中取一個字符串,然後每次點擊'Button'時將它添加到'ListView'。 –

+0

所以我選擇在'Button'的'onClickListener'中創建'ArrayAdapter'。但'ArrayAdapter'爲'this'參數引發錯誤。錯誤'不能轉換爲Context'。 –

+0

也加入這一行listArray = new ArrayList();和乾淨的項目,然後運行 –

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); 

      } 

     } 
    }); 

}