Java 试图将int变量从活动传递到适配器
我正在尝试将intJava 试图将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
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"));
对于myrecyclerView
中的不同单元格,它将是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";
}
//.............
}