简体   繁体   English

在Recycler View中滚动后,Textview停止闪烁

[英]Textview stops blinking after scrolling in Recycler View

Migrated my code from listview to Recycler view using cardview. 使用cardview将我的代码从listview迁移到Recycler视图。 I have applied blinking effect on textview. 我已经在textview上应用了闪烁效果。 Textview stops blinking once i scroll down and move up back. 一旦我向下滚动并向上移动,Textview将停止闪烁。 Applying Animation in onBindViewHolder Recycle Adapter: 在onBindViewHolder回收适配器中应用动画:

    @Override
    public void onBindViewHolder(final TaskViewHolder holder, final int position) {

        final TaskDetails item = list_items.get(position);


        if (item.getStatus().equals(Constants.TASK_ACCEPTED)) {
            holder.acceptButton.setVisibility(View.GONE);
            holder.enrouteButton.setVisibility(View.VISIBLE);
            holder.onsiteButton.setVisibility(View.GONE);
        } else if (item.getStatus().equals(Constants.TASK_ENROUTE_Failed) ||
                item.getStatus().equals(Constants.TASK_ONSITE)) {
            holder.acceptButton.setVisibility(View.GONE);
            holder.enrouteButton.setVisibility(View.GONE);
            holder.onsiteButton.setVisibility(View.VISIBLE);
        } else if (item.getStatus().equals(Constants.TASK_ONSITE_Failed) ||
                item.getStatus().equals(Constants.TASK_COMPLETED)) {
            if (item.getFormList() != null && item.getFormList().size() == 0) {
                holder.acceptButton.setVisibility(View.GONE);
                holder.enrouteButton.setVisibility(View.GONE);
                holder.onsiteButton.setVisibility(View.VISIBLE);
            }

        } else {
            holder.acceptButton.setVisibility(View.GONE);
            holder.enrouteButton.setVisibility(View.GONE);
            holder.acceptButton.setVisibility(View.VISIBLE);
        }



        if (item.getStatus().equals(Constants.TASK_ACCEPTED)) {
            holder.acceptButton.setVisibility(View.GONE);
            holder.enrouteButton.setVisibility(View.VISIBLE);
            holder.onsiteButton.setVisibility(View.GONE);
            holder.completeButton.setVisibility(View.GONE);
        } else if (item.getStatus().equals(Constants.TASK_ENROUTE) || item.getStatus().equals(Constants.TASK_ENROUTE_Failed)) {
            holder.acceptButton.setVisibility(View.GONE);
            holder.enrouteButton.setVisibility(View.GONE);
            holder.onsiteButton.setVisibility(View.VISIBLE);
            holder.completeButton.setVisibility(View.GONE);
        } else if (item.getStatus().equals(Constants.TASK_ONSITE) || item.getStatus().equals(Constants.TASK_ONSITE_Failed)) {
            holder.acceptButton.setVisibility(View.GONE);
            holder.enrouteButton.setVisibility(View.GONE);
            holder.onsiteButton.setVisibility(View.GONE);
            if (item.getFormList() != null && item.getFormList().size() == 0) {
                holder.completeButton.setVisibility(View.VISIBLE);
            }
        } else {
            holder.acceptButton.setVisibility(View.VISIBLE);
            holder.onsiteButton.setVisibility(View.GONE);
            holder.enrouteButton.setVisibility(View.GONE);
            holder.completeButton.setVisibility(View.GONE);
        }


        holder.task_subject_name.setText(item.getTask_subject_name());
        holder.task_detail.setText(item.getDetails());
        holder.task_location.setText(item.getAddress());
        holder.task_id.setText(item.getTask_id());
        holder.imageViewInfo.setTag(holder);
        holder.imageViewTaskInstruction.setTag(holder);
        holder.task_distance.setText(item.getTask_distance());


        String priority = item.getTask_priority();

        if (priority.equalsIgnoreCase(Constants.JSON_VALUE_PRIORITY_HIGH)) {
            holder.list_indicator.setBackgroundResource(R.color.high_priority);
            Animation anim = new AlphaAnimation(0.3f, 1.0f);
            anim.setDuration(200); //You can manage the time of the blink with this parameter
            anim.setStartOffset(20);
            anim.setRepeatMode(Animation.REVERSE);
            anim.setRepeatCount(Animation.INFINITE);
            holder.list_indicator.startAnimation(anim);

        } else if (priority.equalsIgnoreCase(Constants.JSON_VALUE_PRIORITY_NORMAL)) {


            holder.list_indicator.setBackgroundResource(R.color.normal_priority);
        } else if (priority.equalsIgnoreCase(Constants.JSON_VALUE_PRIORITY_LOW)) {

            holder.list_indicator.setBackgroundResource(R.color.low_priority);
        }

        holder.acceptButton.setTag(holder);

You can animate view in onBind method of ViewHolder class. 您可以在ViewHolder类的onBind方法中为视图设置动画。

 public class YourHolder extends RecyclerView.ViewHolder{

    private View list_indicator;
    private ObjectAnimator anim;

    public YourHolder(View itemView) {
        super(itemView);
        list_indicator = itemView.findViewById(R.id.list_indicator);
        anim = ObjectAnimator.ofFloat(list_indicator, "alpha", 0.3f, 1f);
        anim.setRepeatMode(Animation.REVERSE);
        anim.setRepeatCount(Animation.INFINITE);
        anim.setDuration(200);
    }

    public void bind(DataObject dataObject){
         anim.start();
    }
}

Recycler adapter 回收适配器

@Override
public YourHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = mLayoutInflater.inflate(R.layout.my_view, parent, false);
    YourHolder yourholder = new YourHolder(v);
    return yourholder;
}

@Override
public void onBindViewHolder(YourHolder holder, int position) {
    DataObject dataObject = mDataObjects.get(position);
    holder.bind(dataObject);
}

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

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