android view 随机位置,RecyclerView中的android ImageView以随机位置加载相同的图像

本文介绍如何在RecyclerView中实现点击事件,即当用户触摸带有背景的imageView时,将其切换为fillheart图像。通过RecyclerViewAdapter的getAdapterPosition方法跟踪选中位置并进行相应操作。但提到的问题是,滚动时ImageView背景会随机变化,可能是布局管理问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在使用的RecyclerView最初有一个带背景的imageView作为空心图像 . 触摸它时应该更改为fillheart图像 . 我使用RecyclerViewAdapter的getAdapterPosition()将这些检查位置添加到ArrayList,并且如果arraylist包含触摸位置,同样将其删除 . 当我滚动它ImageView的背景在随机位置变化 .

RecyclerAdapter:

public class ShopOfferRecycAdapter extends RecyclerView.Adapter {

View view;int counter=0;ArrayList checkeditems;

@Override

public ShopOfferHolder onCreateViewHolder(ViewGroup parent, int viewType) {

view= LayoutInflater.from(parent.getContext()).inflate(R.layout.shop_offers_recycler_adapter,parent,false);

return new ShopOfferHolder(view);

}

@Override

public void onBindViewHolder(ShopOfferHolder holder, int position) {

DisplayImageOptions options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.mobile)

.showImageForEmptyUri(R.drawable.mobile).showImageOnFail(R.drawable.mobile).cacheInMemory(true).cacheOnDisk(true)

.considerExifParams(true).bitmapConfig(Bitmap.Config.RGB_565).build();

ImageLoader.getInstance().displayImage("http://dress-trends.com/wp-content/uploads/2015/10/Fashion-clothing-for-men-spring-summer-2016-61.jpg",holder.imageView,options);

}

@Override

public int getItemCount() {

return 10;

}

public class ShopOfferHolder extends RecyclerView.ViewHolder{

ImageView imageView,fav;

public ShopOfferHolder(View itemView) {

super(itemView);

checkeditems=new ArrayList();

imageView=(ImageView) itemView.findViewById(R.id.product_img);

fav=(ImageView) itemView.findViewById(R.id.fav);

fav.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

if(checkeditems.size()>0&&checkeditems.contains(getAdapterPosition()+1)==true) {

checkeditems.remove(getAdapterPosition()+1);

fav.setImageResource(R.drawable.heartnofill);

Log.e("Position removed", Integer.toString(getAdapterPosition()+1));

}

else if(checkeditems.contains(getAdapterPosition())==false){

fav.setImageResource(R.drawable.heartfill);

checkeditems.add(getAdapterPosition()+1);

Log.e("Pos added",Integer.toString(getAdapterPosition()+1));

// if(checkeditems.contains(getAdapterPosition()){

// checkeditems.remove(getAdapterPosition());

// Log.e("Position removed",Integer.toString(getAdapterPosition()));

}

return false;

}

});

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值