首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JSON数据创建自定义自定义转接器适配器?

如何使用JSON数据创建自定义自定义转接器适配器?
EN

Stack Overflow用户
提问于 2017-02-25 11:28:50
回答 2查看 680关注 0票数 0

当我从列表数据将数据加载到旋转器时,它可以工作。但是,当我为spinner创建适配器时,它不起作用。我的问题是什么?

活动:

代码语言:javascript
复制
final FieldOfficerApiInterface apiService=OperatingApiClient.getClient().create(FieldOfficerApiInterface.class);

        Call<FieldOfficerApiResponse> call = apiService.getAllEOByBranchID(branchid);
        call.enqueue(new Callback<FieldOfficerApiResponse>() {
            @Override
            public void onResponse(Call<FieldOfficerApiResponse> call, Response<FieldOfficerApiResponse> response) {
                List<FieldOfficer> fieldofficerlist=response.body().getFieldofficerlist();
                Log.d(TAG,"Number of Fieldofficerlist received: "+fieldofficerlist.size());

                //*********DROPDOWN******************************************************

                final Spinner spnrFieldOfficer=(Spinner)findViewById(R.id.spinnerFieldOfficer);

                CustomSpinnerAdapter adapter=new CustomSpinnerAdapter(getApplicationContext(),fieldofficerlist);
                spnrFieldOfficer.setAdapter(adapter);

                //*********END DROPDOWN******************************************************
            }

            @Override
            public void onFailure(Call<FieldOfficerApiResponse> call, Throwable t) {
                // Log error here since request failed
                Log.e(TAG,t.toString());

            }
        });

CustomSpinnerAdapter:

代码语言:javascript
复制
public class CustomSpinnerAdapter extends BaseAdapter {

    private List<FieldOfficer> fieldOfficers;
    private Context context;
    LayoutInflater inflter;


    public CustomSpinnerAdapter(Context context, List<FieldOfficer> fieldOfficers) {
        this.context = context;
        this.fieldOfficers = fieldOfficers;
        this.inflter = (LayoutInflater.from(context));
    }

    @Override
    public int getCount() {
        return 0;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        convertView=inflter.inflate(R.layout.custom_spinner_items,null);
        TextView tv=(TextView)convertView.findViewById(R.id.textView2);
        tv.setText(fieldOfficers.get(position).getFoname());
        return convertView;
    }
}

它不需要自定义适配器:

代码语言:javascript
复制
//*********DROPDOWN******************************************************
                ArrayAdapter<FieldOfficer> adapter;
                adapter = new ArrayAdapter<FieldOfficer>(getApplicationContext(), android.R.layout.simple_selectable_list_item,fieldofficerlist); //getApplication()
                //setting adapter to spinner
                spnrFieldOfficer.setAdapter(adapter);
//*********END DROPDOWN******************************************************
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-25 11:46:02

旋转器将调用您的getCount()来确定列表中有多少项,在您的实现中,您告诉它列表始终是空的。

将getCount()更改为

代码语言:javascript
复制
@Override
    public int getCount() {
        if (fieldOfficers!= null) {
            return fieldOfficers.size();
        }
        return 0;
    }
票数 0
EN

Stack Overflow用户

发布于 2017-02-25 11:32:41

像这样更改getCount()

代码语言:javascript
复制
 @Override
    public int getCount() {
        if (fieldOfficers!= null) {
            return fieldOfficers.size();
        }
        return 0;
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42455470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档