在我的适配器中,我遇到的问题是,如果我在onClickListener之前定义了字符串,则以后无法在onClickListener中更改它。我可以将其设置为不可见,这很完美,但是我无法更改它。
我希望如果用户单击图像,第二个图像应替换第一个图像,但是我不能在imageview中更改图像,我建议这与不能更改的String是相同的问题
感谢您的帮助!
pip3 uninstall anotherpackage
答案 0 :(得分:3)
您应使用相应的位置致电notifyItemChanged
。
@Override
public void onBindViewHolder(final ViewHolder viewHolder, int position) {
final cards currentItem = listItems.get(i);
viewHolder.name.setText(currentItem.getName());
viewHolder.comment.setText(currentItem.getComment());
Picasso.get().load(currentItem.getProfileImageUrl()).into(viewHolder.image);
viewHolder.name.setText("this work"); // here it works
viewHolder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.name.setText("New text"); // this does not work
// viewHolder.name.setVisibility(View.INVISIBLE); this does work
Picasso.get().load(currentItem.getProfileImageUrl2()).into(viewHolder.image); // does not work
notifyItemChanged(position);
}
});
}
答案 1 :(得分:1)
更改列表中特定位置的值,然后notifyItemChanged(position); 在您的点击事件中编写以下代码:
currentItem.setName("abc");
notifyItemChanged(position)
答案 2 :(得分:0)
在数据模型中,您保留了一个变量,该变量指示当前的个人资料图片。
例如
class cards {
String name;
String comment;
....
boolean profileImageChanged;
}
然后在onBindViewHolder中
@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, int i) {
....
if(currentItem.profileImageChanged){
Picasso.get()
.load(currentItem.getProfileImageUrl()).into(viewHolder.image);
} else {
Picasso.get()
.load(currentItem.getProfileImageUrl2()).into(viewHolder.image);
}
viewHolder.name.setText("this work"); // here it works
viewHolder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewHolder.name.setText("New text"); // this does not work
// viewHolder.name.setVisibility(View.INVISIBLE); this does work
notifyItemChanged(position);
}
});
}
答案 3 :(得分:0)
嗨,您也可以采用这种方法。
@Override public void onBindViewHolder(final ViewHolder viewHolder,int position){ 最终卡currentItem = listItems.get(i);
viewHolder.name.setText(currentItem.getName());
viewHolder.comment.setText(currentItem.getComment());
Picasso.get().load(currentItem.getProfileImageUrl()).into(viewHolder.image);
viewHolder.name.setText("this work"); // here it works
viewHolder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewHolder viewNewHolder=viewHolder
viewNewHolder.name.setText("New text");
Picasso.get()。load(currentItem.getProfileImageUrl2())。into(viewNewHolder.image); } });
}
我已经用它了。
*******万事如意*********