You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ListView无setAdapter方法问题:Retrofit取数后无法绑定适配器

问题解决:无法为ListView设置Adapter

你的代码存在两个核心问题导致无法调用setAdapter方法:


1. 变量类型声明错误

你将ListView对象错误声明为泛型List类型,而List接口并没有setAdapter方法。需要将变量类型改为ListView:

修改这一行:

List list=view.findViewById(R.id.listview);

改为:

ListView list=view.findViewById(R.id.listview);

同时确保代码顶部导入了android.widget.ListView包。


2. 方法名拼写错误

Android方法采用驼峰命名法,setAdapter的首字母A需要大写,你写的setadapter是错误的:

修改注释掉的代码行:

// list.setadapter(adapter);

改为:

list.setAdapter(adapter);

额外优化建议

你当前使用的androidx.appcompat.R.layout.support_simple_spinner_dropdown_item是下拉列表专用布局,更适合ListView的标准布局可以用android.R.layout.simple_list_item_1,显示效果更符合列表场景:

ArrayAdapter<String> adapter=new ArrayAdapter<>(getContext(),
        android.R.layout.simple_list_item_1,
        name);

同时建议增加响应体空判断,避免空指针异常:

if(modelsList == null) return;

修改后的完整关键代码片段:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.fragment_get_data,container,false);
    // 修正变量类型为ListView
    ListView list=view.findViewById(R.id.listview);

    Button btn_get_data=view.findViewById(R.id.btn_get_data);

    btn_get_data.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            getdata();
        }

        private void getdata() {
            Call<List<models>> call=ApiClient.getInstance().getApi().getdata();
            call.enqueue(new Callback<List<models>>() {
                @Override
                public void onResponse(Call<List<models>> call, Response<List<models>> response) {
                    List<models> modelsList=response.body();
                    if(modelsList == null) return; // 增加空判断避免崩溃
                    String[] name=new String[modelsList.size()];
                    for (int i=0;i<modelsList.size();i++){
                        name[i]=modelsList.get(i).getName();
                    }
                    ArrayAdapter<String> adapter=new ArrayAdapter<>(getContext(),
                            android.R.layout.simple_list_item_1,
                            name);
                    // 修正方法名拼写
                    list.setAdapter(adapter);
                }

                @Override
                public void onFailure(Call<List<models>> call, Throwable t) {
                    Toast.makeText(getContext(), t.getMessage(), Toast.LENGTH_SHORT).show();
                    Log.e("error", t.getMessage() );
                }
            });
        }
    });

    return view;
}

内容的提问来源于stack exchange,提问作者amir mohammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:07:28