2016-09-01 5 views
0

ボタンをクリックしたときにListViewを埋めたいのですが、ArrayAdapterのコンストラクタに問題があります。ArrayAdapter <String>をAndroid StudioのOnClickListenerとして使用するにはどうすればいいですか?

"onCreate"メソッドの中でこのコードを使用すると、うまく動作しますが、OnClickListener内でArrayAdapterを使用すると、この問題が発生します。

mybtn = (Button) findViewById(R.id.buttonTest); 
myXMLListView=(ListView)findViewById(R.id.xmlListView); 

View.OnClickListener myClickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      ArrayList<String> your_array_list = new ArrayList<String>(); 
      your_array_list.add("foo"); 
      your_array_list.add("bar"); 

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

      myXMLListView.setAdapter(arrayAdapter); 
     } 
    }; 
    mybtn.setOnClickListener(myClickListener); 

Error:(62, 53) error: no suitable constructor found for ArrayAdapter(,int,ArrayList) constructor ArrayAdapter.ArrayAdapter(Context,int,int,List) is not applicable (actual and formal argument lists differ in length) constructor ArrayAdapter.ArrayAdapter(Context,int,List) is not applicable (actual argument cannot be converted to Context by method invocation conversion) constructor ArrayAdapter.ArrayAdapter(Context,int,int,String[]) is not applicable (actual and formal argument lists differ in length) constructor ArrayAdapter.ArrayAdapter(Context,int,String[]) is not applicable (actual argument cannot be converted to Context by method invocation conversion) constructor ArrayAdapter.ArrayAdapter(Context,int,int) is not applicable (actual argument cannot be converted to Context by method invocation conversion) constructor ArrayAdapter.ArrayAdapter(Context,int) is not applicable (actual and formal argument lists differ in length)

答えて

1

インスタンス化は次のようArrayAdapter:あなたはそれを使用しているので、パラメータの型の不一致がある場合

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(ActivityName.this, 
        android.R.layout.simple_list_item_1,your_array_list); 

thisの意味は異なっています。コンストラクタでthisの代わりにActivityName.thisを使用してください。ActivityNameは、そのコードを含むアクティビティの名前です。

0

グローバルコンテキストは、次にあなたがこのコンテキストを使用することができるのonCreate内でそれを初期化し、その後、ArrayAdapter

private Context context; 

//Inside OnCreate 
context = this; 

内で使用宣言

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(context, 
       android.R.layout.simple_list_item_1,your_array_list); 
関連する問題