试图将一个 int 变量从 Activity 传递给 Adapter

trying to pass an int variable from Activity to Adapter

我正在尝试将 int pub_or_priv 从我的 Activity1 传递给 Myadapter

我查看了此处的帖子,我认为我已经正确地遵循了它们,但仍然无法正常工作。我的 adapter 中的值始终是 0 而它应该是 012,就像我的 [=16] 中的值一样=].

这是我所做的。

在我的 Activity1 中,我从服务器获取 "publicorprivate" 并将其转换为 int,其中:

//convert public_or_private to an integer
pub_or_priv = Integer.parseInt(obj.getString("publicorprivate"));

对于我 recyclerView 中的不同单元格,它将是 012

现在我想把它传递给我的 adapter 所以在我的 adapter contructor 我有:

public MyAdapter(List<Review> reviewUsers, Activity activity, int pub_or_priv) {

        this.activity = activity;
        the_reviews = reviewUsers;
        this.mPub_or_priv = pub_or_priv;

    }

在我的 Activity1 中:

pAdapter = new MyAdapter(reviewList, this, pub_or_priv);

然后在 MyAdapter:

    @Override
        public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {

            Review r = the_reviews.get(position);

            //shared_status will be Just U, Private or Public
            String shared_status ="";

            if(mPub_or_priv==0){
                //change colour depending on value
                ((ReviewHolder) viewHolder).phone_user_name.setTextColor(Color.parseColor("#DA850B"));
                shared_status = "Just U";
            }

            if(mPub_or_priv==1){
                ((ReviewHolder) viewHolder).phone_user_name.setTextColor(Color.parseColor("#0A7FDA"));
                shared_status = "Private";
            }

            if(mPub_or_priv==2){
                ((ReviewHolder) viewHolder).phone_user_name.setTextColor(Color.parseColor("#2AB40E"));
                shared_status = "Public";

            }


            ((ReviewHolder) viewHolder).phone_user_name.setText(shared_status);

etc..etc..

然而在 recyclerView 中所有单元格中 phone_user_name textbox 总是 "Just U"#DA850B 颜色,而实际上它应该是根据 Activity1.

中的 pub_or_priv 值,在某些单元格中为 PrivatePublic

如何才能将 pub_or_priv 正确输入到我的 adapter 中?谢谢。

看起来您在 activity/adapter 中使用了一个值,因此当然所有行都显示相同的值。

在适配器中,使用与当前单元格对应的 Review 实例中的值:

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int position) {

    Review review = the_reviews.get(position);

    int pubOrPriv = review.getPublicOrPrivate();

    //shared_status will be Just U, Private or Public
    String shared_status = "";

    if (pubOrPriv == 0) {
        //change colour depending on value
        ((ReviewHolder) viewHolder).phone_user_name.setTextColor(Color.parseColor("#DA850B"));
        shared_status = "Just U";
    }

    if (pubOrPriv == 1) {
        ((ReviewHolder) viewHolder).phone_user_name.setTextColor(Color.parseColor("#0A7FDA"));
        shared_status = "Private";
    }

    if (pubOrPriv == 2) {
        ((ReviewHolder) viewHolder).phone_user_name.setTextColor(Color.parseColor("#2AB40E"));
        shared_status = "Public";

    }

    //.............
}