Java 自定义适配器getCount方法中出现空指针异常

Java 自定义适配器getCount方法中出现空指针异常,java,android,listview,retrofit2,Java,Android,Listview,Retrofit2,我正在使用eclipse和改型开发一个应用程序,该应用程序旨在获取对象的JSON数组,并将其显示在listview中。我的Web服务运行良好。我使用Reformation2获得POJO类,如下所示: public static UnicsAgencyApi getUnicsAgencyApi() { if (sUnicsAgencyApi == null) { retrofit = new Retrofit.Builder().baseUrl(ENDPO

我正在使用eclipse和改型开发一个应用程序,该应用程序旨在获取对象的JSON数组,并将其显示在listview中。我的Web服务运行良好。我使用Reformation2获得POJO类,如下所示:

public static UnicsAgencyApi getUnicsAgencyApi() {

        if (sUnicsAgencyApi == null) {
            retrofit = new Retrofit.Builder().baseUrl(ENDPOINT_URL).addConverterFactory(GsonConverterFactory.create())
                    .build();
            sUnicsAgencyApi = retrofit.create(UnicsAgencyApi.class);
        }
        return sUnicsAgencyApi;
    }

    public interface UnicsAgencyApi {

        @GET("api/uconnectservice/AllAgency")
        Call<ArrayList<AgencyModel>> getStreams();
    }

请注意,我似乎无法确定我哪里出了问题,非常感谢您提供任何关于什么可能是错误或解决此问题的更好方法的指导,干杯

RestApi.getUnicsAgencyApi().getStreams().enqueue方法更可能在线程上工作。因此下载。。。方法返回数据将不正确。您可以在onResponse方法中调用bakc结果。

我猜您的AgencyList没有实例化,或者即使在调用之后也指向null

AgencyList = DownloadAgencyData();
在该行添加断点以进行调试

由于listview依赖于来自Web服务的数据,因此最好在调用
setAdapter()之前检查是否收到了数据-

if(AgencyList !=null){
 **AgencyListAdapter mAdapter = new AgencyListAdapter(this, AgencyList);**
        listView2.setAdapter(mAdapter);
} else{ Log.d(TAG,"AgencyList is null");
编辑:看看这是否有帮助
设置访问数据的多次尝试


用于(int retry=0;AgencyList!=null&&retry在调试器中设置一个断点,在这里调用
getCount
,并从那里观察问题。@4我设置了一个断点,但没有任何其他建议pls@4castle,我觉得我已经接近答案了,但是…….调用
getCount
的代码实际上不在您的帖子中你在这里,但你应该可以用我链接到的问题来调试它。好的@4castle查看我现在非常感谢你的输入。好的,@empty但是你可以更明确一点,首先让你的适配器是全局的。然后删除代码和onResponse,就像这样“@Override public void onResponse”(调用AgencyModelData,Response Response){if(Response==null)Response=new ArrayList();mAdapter=new AgencyListAdapter(this,AgencyList);listView2.setAdapter(mAdapter);}'删除代码
ArrayList AgencyList=null;AgencyList=DownloadAgencyData();**AgencyListAdapter mAdapter=new AgencyListAdapter(this,AgencyList);**listView2.setAdapter(mAdapter);
replaced DownloadAgencyData()我很欣赏这段代码。现在我得到的AgencyList为null消息表明从DownloadAgencyData()没有收到任何消息,我重新检查了我的Web服务,一切正常…非常接近,但到目前为止…设置多次尝试访问数据。您可以为(retry=0;AgencyList!=null&&retry 10和AgencyList==null那么您可能需要检查您的网络连接。您是否在AndroidManifest.xml中声明了网络访问权限?web服务是否使用https连接我正在使用ASP.NET web Api作为web服务,并且我在清单和连接中拥有所有必要的权限。Stil我无法让名单显示…这么近但是这么远。。。。
AgencyList = DownloadAgencyData();
if(AgencyList !=null){
 **AgencyListAdapter mAdapter = new AgencyListAdapter(this, AgencyList);**
        listView2.setAdapter(mAdapter);
} else{ Log.d(TAG,"AgencyList is null");