我将应用程序的所有API调用方法组织在一个单独的类中。因此,当我从服务器获取响应时,将其插入到Model类中。但是问题是,我无法notifyDataSetChanged()(从解析JSON的类中)我解析所有的JSON。因此,我的适配器的getItemCount()值始终为0。结果是recyclerView永远没有数据。这是我的 Fragment.classRecyclerView recyclerView;LatestAdapter latestAdapter;List<PostItem> latestItems;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_latest, container, false); // Initilize the RecyclerView and Adapter recyclerView =(RecyclerView)view.findViewById(R.id.recycler_view); latestAdapter = new LatestAdapter(getContext(),latestItems); final LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(mLayoutManager); recyclerView.setAdapter(latestAdapter); fetchIntialPost();} private void fetchIntialPost() { //here I make API call in another class,which is all API calling method in that class ApiHelper apiHelper = new ApiHelper(); apiHelper.fetchIntialPost();}问题:我现在的问题是,我无法访问LatestAdapterFragment.class中的对象。因此,我notifyDataSetChanged()在解析响应Json后无法调用。我尝试了什么我试图在ItemHelper类中创建如下所示的方法:public List<tItem> getList() { return items;}在LatestAdapter中,我还创建了这样的方法:public void setItem(List<Item> item) { this.latestItems = item; notifyDataSetChanged();}然后在Fragment.class中,我像这样访问它ItemHelper itemHelper = new ItemHelper();latestItems = itemHelper.getList();latestAdapter.setPosts(latestItems);与我上面试过了,getItemCount()的LatestAdapter仍为0,API调用之后。所以有人请给我一个解决这个问题的提示,或者是一种更好的解决方案,用于将1类中的所有API调用方法组织起来,将1类中的所有JSON解析操作组织在一起notifyDataSetChanged()。适配器也可以同时使用。
3 回答
青春有我
TA贡献1784条经验 获得超8个赞
更改您的体系结构是不正确的。否则,如果您不想更改。可以尝试这种方式:
public void setDataList(List<RealmSave_Data> dataList) {
this.dataList = dataList;
}
适配器中的此方法并从您要调用的位置调用该方法,还将此列表传递给构造函数,因为它将在getCount()中初始化,它将返回该值。
芜湖不芜
TA贡献1796条经验 获得超7个赞
每个人都可以使用回调。您也可以使用RxAndroid通过矿石控制来完成这项工作。
如果您发现Rx异常或难以理解,则可以使用事件总线(实际上,事件总线在某种程度上被称为反模式,但仍然可以使用它们)。
事件总线的一个很好的实现是RxBus,您也可以使用SimpleEventBus,它是另一种基于Rx的事件总线,它可以生成有意义的方法,这些方法可能很容易理解。
添加回答
举报
0/150
提交
取消