ヤン:
私のアダプタで私が定義されている場合onClickListener私の前の文字列がonClickListenerに後でそれを変更できないという問題があります。私はそれを変更することはできませんが完璧に動作している目に見えないに設定することができます。
私は、画像をユーザーがクリックすると、第二の画像は、最初のものを置き換える必要がありますが、私はどちらかのImageViewの画像を変更することができない場合、私はそれは私が変更できない文字列と同じ問題があることを示唆していることを望みます。
任意の助けてくれてありがとう!
private List<cards> listItems;
private Context context;
public arrayAdapter(List<cards> listItems, Context context) {
this.listItems = listItems;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
return new ViewHolder(v);
}
@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, int i) {
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) {
//Try this
currentItem.setName("New text");
notifyDataSetChanged();
//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
}
});
}
@Override
public int getItemCount() {
return listItems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView name, comment, howMany;
public ImageView image;
/**
* @param itemView
*/
ViewHolder(@NonNull View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.name);
image = (ImageView) itemView.findViewById(R.id.image);
comment = (TextView) itemView.findViewById(R.id.commentText);
}
}
}
フレグランス:
その後、変更の特定の位置にあなたのリスト内の値とnotifyItemChanged(位置); あなたのクリックイベントでこれを書きます:
currentItem.setName("abc");
notifyItemChanged(position)