no suitable constructor found for ArrayAdapter

匿名 (未验证) 提交于 2019-12-03 01:26:01

问题:

I'm getting the following error:

Error:(34, 53) error: no suitable constructor found for ArrayAdapter(AllStores,ListView,Response<List<Store>>) constructor ArrayAdapter.ArrayAdapter(Context,int,int,List<String>) is not applicable (actual and formal argument lists differ in length) constructor ArrayAdapter.ArrayAdapter(Context,int,List<String>) is not applicable (actual argument ListView cannot be converted to int 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 ListView cannot be converted to int by method invocation conversion) constructor ArrayAdapter.ArrayAdapter(Context,int,int) is not applicable (actual argument ListView cannot be converted to int by method invocation conversion) constructor ArrayAdapter.ArrayAdapter(Context,int) is not applicable (actual and formal argument lists differ in length) 

And this is what I have tried:

        ArrayAdapter<String> stringArrayAdapter=new ArrayAdapter<String>(                 AllStores.this,                 lv,                 subprises); 

I have also tried to replace the first parameter of ArrayAdapter with this, getApplicationContext() or context. Unfortunately it didn't worked. I have really no idea what I'm doing wrong.

Here below you can see my code if you want to see it:

AllStores.java:

public class AllStores extends Activity {     private ListView lv;     Context context;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_all_stores);         lv = (ListView) findViewById(R.id.store_list);         Response<List<Store>> subprises;         try {             subprises = new StoreService().getSubprises();             Iterator it = subprises.body().iterator();             ArrayAdapter<String> stringArrayAdapter=new ArrayAdapter<String>(                     AllStores.this,                     lv,                     subprises);         } catch (IOException e) {             e.printStackTrace();         } catch (ExecutionException e) {             e.printStackTrace();         } catch (InterruptedException e) {             e.printStackTrace();         }     } } 

回答1:

The ArrayAdapter<String> constructor doesn't accept ListView nor Response<List<Store>> and in your code you added them both

ArrayAdapter<String> stringArrayAdapter=new ArrayAdapter<String> AllStores.this, lv, subprises); 

but it should take the Context, layout resource id and the List<String> or String[]. A simple adapter would be

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

then you set that adapter to your ListView

lv.setAdapter(adatper); 

If you want more complex adapter, you should create a custom ArrayAdapter. Check out this link
http://www.ezzylearning.com/tutorial/customizing-android-listview-items-with-custom-arrayadapter



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!