试图将一个 int 变量从 Activity 传递给 Adapter
trying to pass an int variable from Activity to Adapter
我正在尝试将 int pub_or_priv
从我的 Activity1
传递给 Myadapter
。
我查看了此处的帖子,我认为我已经正确地遵循了它们,但仍然无法正常工作。我的 adapter
中的值始终是 0
而它应该是 0
、1
或 2
,就像我的 [=16] 中的值一样=].
这是我所做的。
在我的 Activity1
中,我从服务器获取 "publicorprivate"
并将其转换为 int
,其中:
//convert public_or_private to an integer
pub_or_priv = Integer.parseInt(obj.getString("publicorprivate"));
对于我 recyclerView
中的不同单元格,它将是 0
、1
或 2
。
现在我想把它传递给我的 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
值,在某些单元格中为 Private
和 Public
如何才能将 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";
}
//.............
}
我正在尝试将 int pub_or_priv
从我的 Activity1
传递给 Myadapter
。
我查看了此处的帖子,我认为我已经正确地遵循了它们,但仍然无法正常工作。我的 adapter
中的值始终是 0
而它应该是 0
、1
或 2
,就像我的 [=16] 中的值一样=].
这是我所做的。
在我的 Activity1
中,我从服务器获取 "publicorprivate"
并将其转换为 int
,其中:
//convert public_or_private to an integer
pub_or_priv = Integer.parseInt(obj.getString("publicorprivate"));
对于我 recyclerView
中的不同单元格,它将是 0
、1
或 2
。
现在我想把它传递给我的 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
值,在某些单元格中为 Private
和 Public
如何才能将 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";
}
//.............
}