如何设置阿尔法recyclerview项目除了一个点击

问题描述 投票:1回答:2

我有一个recyclerview与imageview的并且textview.I与它的图像和text.I填充已经使用customadapter为recyclerview.Everything工作正常,但现在我想

1)当我点击一个图像,所有其它图像的α将被设置为0.5F

这里是我的代码只阿尔法本身

public class CatAdapter extends RecyclerView.Adapter<CatAdapter.HeroViewHolder> {

  Context mCtx;
  List<CatModel> adsList;
  int selectedPosition=-1;

  public CatAdapter(Context mCtx, List<CatModel> heroList) {
    this.mCtx = mCtx;
    this.adsList = heroList;
  }

  @NonNull
  @Override
  public HeroViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(mCtx).inflate(R.layout.cat_recycler_layout, parent, false);

    return new HeroViewHolder(view);
  }

  @Override
  public void onBindViewHolder(@NonNull final HeroViewHolder holder, int position) {
    final CatModel hero = adsList.get(position);

    Glide.with(mCtx)
      .load(hero.getImageurl())
      .into(holder.imageView);

    holder.textView.setText(hero.getName());

    holder.imageView.setOnClickListener(new View.OnClickListener() {
        int button01pos = 0;
        @Override
        public void onClick(View view) {
          if (button01pos == 0) {
            holder.cross.setVisibility(View.VISIBLE);
            holder.imageView.setAlpha(1f);
            button01pos = 1;
          } else if (button01pos == 1) {
            holder.cross.setVisibility(View.GONE);
            holder.imageView.setAlpha(1f);
            button01pos = 0;
          }
        }
      });
  }

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

  class HeroViewHolder extends RecyclerView.ViewHolder {

    ImageView cross;
    CircleImageView imageView;
    TextView textView;

    public HeroViewHolder(View itemView) {
      super(itemView);

      imageView = itemView.findViewById(R.id.imageView);
      cross = itemView.findViewById(R.id.cross);
      textView = itemView.findViewById(R.id.textView);
    }
  }
}
android android-recyclerview opacity onitemclicklistener
2个回答
2
投票

试试这个方法。

public class CatAdapter extends RecyclerView.Adapter<CatAdapter.HeroViewHolder> {

Context mCtx;
List<CatModel> adsList;
int selectedPosition=-1;
CatModel selectedItem = null;

@Override
public void onBindViewHolder(@NonNull final HeroViewHolder holder, int position) {
    ...
    holder.imageView.setAlpha(selectedItem == null || hero.equals(selectedItem) ? 1f : 0.5f);
    holder.imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            selectedItem = hero.equals(selectedItem) ? null : hero;
            ...
            notifyDataSetChanged();
        }
    });
}

...

0
投票

试试这个方法

全球selectedItem =-1

override fun onBindViewHolder(@NonNull final HeroViewHolder holder, int position) {
  if(position == selectedItem)holder.itemView.setAlpha(0.5f)

  holder.itemview.setOnClickListener{
     selectedItem = position
     notifyDataSetChanged()
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.