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

Activity1向Myadapter传递int变量pub_or_priv失败求助

解决Activity向Adapter传递int变量始终为0的问题

我来帮你排查下这个问题,大概率是变量传递的时机或者Adapter初始化逻辑出了问题,咱们一步步来解决:

1. 先确认Adapter的构造方法是否正确接收变量

首先要保证你的MyAdapter有对应的构造参数来接收这个int值,并且把它赋值给Adapter的成员变量,别犯低级的命名错误哦:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    // 定义成员变量存储传递过来的值
    private int pubOrPriv;

    // 构造方法,接收Activity传过来的参数
    public MyAdapter(int pubOrPriv) {
        this.pubOrPriv = pubOrPriv;
        // 其他初始化逻辑(比如数据源初始化)
    }

    // ... 其他Adapter方法(onCreateViewHolder、onBindViewHolder等)
}

2. 确保初始化Adapter时,已经拿到了正确的pub_or_priv值

很多时候问题出在你提前初始化了Adapter——比如在服务器请求还没返回、pub_or_priv还是默认值0的时候就创建了Adapter实例,之后即使拿到了正确值,Adapter也不会自动同步。

正确的做法是:在服务器请求成功、完成字符串转int的操作之后,再创建Adapter并设置给RecyclerView,记得先打日志确认Activity里的变量值是对的:

// 服务器请求成功的回调方法里
@Override
public void onSuccess(JSONObject obj) {
    try {
        // 转换变量
        int pub_or_priv = Integer.parseInt(obj.getString("publicorprivate"));
        // 先打日志确认这个值是不是0、1、2,排除服务器返回数据的问题
        Log.d("Activity1", "当前pub_or_priv的值:" + pub_or_priv);
        
        // 这里才初始化Adapter并设置
        MyAdapter myAdapter = new MyAdapter(pub_or_priv);
        yourRecyclerView.setAdapter(myAdapter);
    } catch (JSONException e) {
        e.printStackTrace();
        // 别忘了处理JSON解析异常,可能是字段名写错了?
    }
}

3. 如果已经提前初始化了Adapter,用更新方法同步变量

要是因为业务需求,你必须提前创建Adapter实例,那就在Adapter里加一个更新变量的方法,拿到值后主动同步并刷新:

// 在MyAdapter中添加更新方法
public void updatePubOrPriv(int newPubOrPriv) {
    this.pubOrPriv = newPubOrPriv;
    // 刷新Adapter,让新值生效
    notifyDataSetChanged();
    // 如果只需要刷新特定条目,可以用notifyItemChanged(position)优化
}

然后在Activity的回调里调用这个方法:

// 拿到正确的pub_or_priv后
myAdapter.updatePubOrPriv(pub_or_priv);

4. 检查Adapter中使用变量的地方

最后确认下你在Adapter里使用这个变量的代码,有没有不小心定义了同名的局部变量覆盖了成员变量?比如在onBindViewHolder里写了int pubOrPriv = 0;,那肯定会一直用0的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:33:31