Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图将int变量从活动传递到适配器_Java_Android_Adapter - Fatal编程技术网

Java 试图将int变量从活动传递到适配器

Java 试图将int变量从活动传递到适配器,java,android,adapter,Java,Android,Adapter,我正在尝试将intpub\u或priv从我的Activity1传递到Myadapter 我看过这里的帖子,我想我已经正确地遵循了它们,但它仍然不起作用。我的适配器中的值总是0,而它应该是0、1或2,就像我的活动1中的值一样 这就是我所做的 在我的活动1中,我从我的服务器获取“publicorprivate”,并使用以下命令将其转换为int: //convert public_or_private to an integer pub_or_priv = Integer.parseInt(obj.g

我正在尝试将int
pub\u或priv
从我的
Activity1
传递到
Myadapter

我看过这里的帖子,我想我已经正确地遵循了它们,但它仍然不起作用。我的
适配器中的值总是
0
,而它应该是
0
1
2
,就像我的
活动1
中的值一样

这就是我所做的

在我的
活动1
中,我从我的服务器获取
“publicorprivate”
,并使用以下命令将其转换为
int

//convert public_or_private to an integer
pub_or_priv = Integer.parseInt(obj.getString("publicorprivate"));
对于my
recyclerView
中的不同单元格,它将是
0
1
2

现在我想把它传递给我的
适配器
,因此在我的
适配器
构造函数
中我有:

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

        this.activity = activity;
        the_reviews = reviewUsers;
        this.mPub_or_priv = 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\U user\U name
文本框总是
“Just U”
,颜色为
\DA850B
,而事实上,根据
活动1
中的
pub\U或值,在某些单元格中它应该是
私有的
公共的


我如何才能将
pub\u或_priv
正确地放入我的
适配器中,谢谢。

看起来您在活动/适配器中使用了一个值,所以所有行显示的值都是相同的

在适配器中,使用与当前单元格对应的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";

    }

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

您需要在
Review
类中添加一个int字段,以便跟踪RecyclerView中每个项目的值。在我的
Review
类中,我有一个
getter
setter
用于
publicorprivate
from server,比如
//获取0,1或2个值,只需U,私有或公共字符串getPublicorprivate(){return publicorprivate;}
公共无效设置publicorprivate(String publicorprivate){this.publicorprivate=publicorprivate;}
我需要创建另一个吗?
@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";

    }

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