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

如何从AllResponse的私有内部类中获取数据并在Adapter中使用?

问题场景

  • 适配器代码:
holder.tv_item_title.setText(dataList.get(position).getTitle());
  • AllResponse数据类:
public class AllResponse {

    public AllResponse(List<WishResponseList> wishResponseListList) {
        this.wishResponseListList = wishResponseListList;
    }

    List<WishResponseList> wishResponseListList;

    private class WishResponseList {

        int id;
        String title;
        String contents;
        String writer;
        boolean clear;
        String color;

        public int getId() {
            return id;
        }
    }
}
  • 回调方法:
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)

你的核心需求是在Adapter中获取AllResponse私有内部类里的数据,同时解决Kotlin实现时的编译错误,以下是具体解决方案:


1. 修复Java版AllResponse的访问权限问题

私有内部类WishResponseList无法被外部类直接访问,需要调整权限并补充Getter方法:

public class AllResponse {

    private List<WishResponseList> wishResponseListList;

    public AllResponse(List<WishResponseList> wishResponseListList) {
        this.wishResponseListList = wishResponseListList;
    }

    // 将内部类改为public,允许外部访问
    public class WishResponseList {
        private int id;
        private String title;
        private String contents;
        private String writer;
        private boolean clear;
        private String color;

        public int getId() { return id; }
        public String getTitle() { return title; }
        public String getContents() { return contents; }
        public String getWriter() { return writer; }
        public boolean isClear() { return clear; }
        public String getColor() { return color; }
    }

    // 对外提供获取数据列表的方法
    public List<WishResponseList> getWishResponseListList() {
        return wishResponseListList;
    }
}

2. MainActivity中传递数据到Adapter

在回调里解析数据并构建AllResponse,再把内部类列表传给Adapter:

public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
    if (response.isSuccessful() && response.body() != null) {
        // 假设已完成JSON解析,得到WishResponseList类型的列表
        List<AllResponse.WishResponseList> wishDataList = ...;
        AllResponse allResponse = new AllResponse(wishDataList);
        
        // 把数据列表传入Adapter
        YourRecyclerAdapter adapter = new YourRecyclerAdapter(allResponse.getWishResponseListList());
        yourRecyclerView.setAdapter(adapter);
    }
}

3. Adapter中正常调用Getter

此时你的原适配器代码即可正常工作:

holder.tv_item_title.setText(dataList.get(position).getTitle());

4. Kotlin实现的编译错误修复

Kotlin中内部类的声明规则与Java不同,之前的编译错误大概率是权限或内部类类型问题,改写后的Kotlin版AllResponse如下:

class AllResponse(private val wishResponseListList: List<WishResponseList>) {

    // 不需要持有外部类引用时,去掉inner(对应Java静态内部类)
    // 需要外部类引用时保留inner(对应Java非静态内部类)
    data class WishResponseList(
        val id: Int,
        val title: String,
        val contents: String,
        val writer: String,
        val clear: Boolean,
        val color: String
    )

    fun getWishResponseListList(): List<WishResponseList> = wishResponseListList
}

Adapter中可直接访问属性:

holder.tv_item_title.text = dataList[position].title

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:48:11