将数组中的数据加载到微调器中

Load data from an Array into a Spinner

我调用服务器,服务器以数组格式 [Voters, Passport, DriversLicense, SocialSecurity] 给我一个响应。我想将项目添加到微调器,以便用户可以从微调器一次 select 一个项目。

下面是我的代码:

public void loadIdTypes() {
    mAPIService.loadIdTypes().enqueue(new Callback<IdType>(){
        @Override
        public void onResponse(Response<IdType> response, Retrofit retrofit) {
            String name = response.body().getData().toString();
            Log.i("cityName", name);

        }

        @Override
        public void onFailure(Throwable t) {

        }
    });
}

我想 IdType 就是您所说的数组。如果是这样,那么您只需要为您的微调器创建一个适配器,如下所示:

首先,如果您在 Activity 中使用微调器,则在 onCreate 方法中初始化微调器;如果您使用片段,则在 onViewCreated 中初始化微调器:

Spinner s = (Spinner) findViewById(R.id.Spinner01);

然后在您的回调中,您应该执行以下操作:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(context,
        android.R.layout.simple_spinner_item, response.body().getData());
s.setAdapter(adapter);

您可以将上下文作为参数传递给方法 "loadIdTypes"。如果该代码在 Activity 中使用,只需使用 MyActivity.this。如果您在 Fragment 中使用它,只需调用 getContext()。 名为 "android.R.layout.simple_spinner_item" 的布局只是默认布局,您可以使用您想要的布局。 第三个参数应该是数组或者List。

有关详细信息,您可以查看 official example