Как установить альфа на элемент в программе реселлера, кроме одного клика - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть просмотрщик с изображениями и текстовым обзором. Я заполняю его изображением и текстом. Я использовал customadapter для recyclerview. Все работает нормально, но теперь я хочу

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);
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Попробуйте вот так

глобально 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()
  }
}
0 голосов
/ 06 февраля 2019

Попробуйте так.

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();
        }
    });
}

...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...