简体   繁体   English

将交替的onClickListener设置为Recyclerview项

[英]Set alternating onClickListener to Recyclerview item

I have 50 recyclerview items which are green in color now when i click on item It turns to red , when i will click again then it turns back to green below is code how implemented it 当我单击项目时,我现在有50个recyclerview项目为绿色,当它变成红色时,当我再次单击然后又变成绿色时,下面的代码是如何实现的

public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {

    if (holder instanceof ItemViewHolder) {
        ((ItemViewHolder)holder).Title.setText(position+1+"");
        ((ItemViewHolder)holder).imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (status==0){
                    status=1;
                    ((ItemViewHolder) holder).imageView.setImageResource(R.drawable.ic_social_person);//red icon
                }else {
                    status=0;
                    ((ItemViewHolder) holder).imageView.setImageResource(R.drawable.ic_social_person_green);//green icon
                }

            }
        });


    } else {
        ((progressHolder) holder).progressBar.setIndeterminate(true);
    }


}

now problem is when i click on 1 st item it turns red icon but when i click on 2nd it doses not changes to red icon when i will click again second time it changes to red icon how to solve this 现在的问题是,当我单击第一项时它变成红色图标,但是当我单击第二项时它没有变成红色图标,当我第二次再次单击时它变成红色图标如何解决这个问题

 public SparseBooleanArray array = new SparseBooleanArray();
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {

        if (holder instanceof ItemViewHolder) {
            ((ItemViewHolder)holder).Title.setText(position+1+"");
            ((ItemViewHolder)holder).imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    boolean status = array.get(position);
                    if (!status){
                        array.put(position,!status);
                        ((ItemViewHolder) holder).imageView.setImageResource(R.drawable.ic_social_person);//red icon
                    }else {
                        array.put(position,!status);
                        ((ItemViewHolder) holder).imageView.setImageResource(R.drawable.ic_social_person_green);//green icon
                    }

                }
            });


        } else {
            ((progressHolder) holder).progressBar.setIndeterminate(true);
        }


    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM