gpt4 book ai didi

android - 单击 RecyclerView 更改图像

转载 作者:行者123 更新时间:2023-11-29 19:20:49 25 4
gpt4 key购买 nike

我正在制作类似选车功能的 ola。我有一个 API,可以从中获取汽车类型、选定的图像链接和未选定的图像链接。为此,我正在使用带有文本和 ImageView 的 recyclerview。在创建 recyclerview 时,我选择第一个位置并显示 hover-image 以显示已选择。当我选择另一个图像时,它会更改为选定图像,但之前选择的图像不会更改为未选定图像。这意味着 for 循环不起作用。但是当我为未选择的图像打印 url 链接时,url 链接显示正确。那为什么它没有出现在毕加索身上。

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

private List<Model> arrayList;
private Context context;

public MyAdapter(Context context, List<Model> arrayList) {
this.arrayList = arrayList;
this.context = context;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.rowlayout, parent, false);

return new MyViewHolder(itemView);
}

class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
TextView txt;
ImageView image;
LinearLayout LL_root;

MyViewHolder(View view) {
super(view);
txt = (TextView) view.findViewById(R.id.txt);
image = (ImageView) view.findViewById(R.id.image);
LL_root = (LinearLayout) view.findViewById(R.id.LL_root);
LL_root.setOnClickListener(this);
}

@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.LL_root:
int pos = getAdapterPosition();
System.out.println("sammy_onclick_position "+pos);



for(int i=0; i<arrayList.size(); i++){
if(pos!=i){
Picasso.with(context).load(arrayList.get(i).getImage()).into(image);
System.out.println("sammy_unselected_image "+arrayList.get(i).getImage());
}
}
Picasso.with(context).load(arrayList.get(pos).getSelectedImage()).into(image);
System.out.println("sammy_selected_image "+arrayList.get(pos).getSelectedImage());
break;
}
}
}

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Model model = arrayList.get(position);
holder.txt.setText(model.getTitle());
if (!TextUtils.isEmpty(model.getImage())){
if(position==0)
Picasso.with(context).load(model.getSelectedImage()).into(holder.image);
else
Picasso.with(context).load(model.getImage()).into(holder.image);
}

}

@Override
public int getItemCount() {
return arrayList.size();
}
}

最佳答案

您可以在适配器中保留对所选位置的引用,然后检查当前项目是否在 onBindViewHolder 中被选中:

创建一个全局字段:

int selectedPos = 0;

在你的 onClick 中:

selectedPos = getAdapterPosition();

然后在您的 onBindViewHolder 中以这种方式进行检查:

if(position == selectedPos) {    
Picasso.with(context).load(model.getSelectedImage()).into(holder.image);
} else {
Picasso.with(context).load(model.getImage()).into(holder.image);
}

关于android - 单击 RecyclerView 更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42528574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com