jakob-grabner/Circle-Progress-View

when i polling data from server refresh view in RecyclerView.Adapter, The view always twinkling

someoneYYYY opened this issue · 1 comments

I always get same data from server. but when i refresh,the circle-progress-view will change from 0 to the value I set. why ?
this is code

  @Override
    public void onBindViewHolder(StoveHolder holder, int position) {
        DeviceEntity stoveItem = lists.get(position);
        if(stoveItem != null) {
            holder.stoveDevice.setBackgroundResource(StatusMap.statusAndView.get(stoveItem.getStatus().name()));
            holder.stoveNum.setText(stoveItem.getAssetsCode());
            holder.runState.setText(stoveItem.getStatus().name());
            holder.runStateBlock.setBackgroundResource(StatusMap.statusAndView.get(stoveItem.getStatus().name()));
            holder.timeLeft.setText(stoveItem.getResidualTime());
            holder.firstSetting.setText(stoveItem.getTemperature());

           // circle-progress-view  set value
            holder.firstActual.setValue(Float.parseFloat(stoveItem.getTemperature1()));


            holder.secondSetting.setText(stoveItem.getTemperature());
            holder.secondActual.setValue(Float.parseFloat(stoveItem.getTemperature2()));
            holder.thirdSetting.setText(stoveItem.getHumidity());
            holder.thirdActual.setValue(Float.parseFloat(stoveItem.getHumidity1()));
            holder.fourSetting.setText(stoveItem.getHumidity());
            holder.fourActual.setValue(Float.parseFloat(stoveItem.getHumidity2()));
            holder.productModel.setText(stoveItem.getMaterialCode());
            holder.orderNum.setText(stoveItem.getQuantity());
        }
    }

this is setAdapter

 recyclerView.setLayoutManager(new StaggeredGridLayoutManager(6,StaggeredGridLayoutManager.VERTICAL));
        adapter = new StoveAdapter(list,this, (view,code) -> {
            //jump to other page
            Intent intent = new Intent(MainActivity.this,DetailActivity.class);
            intent.putExtra(TAG,code);
            startActivity(intent);
        });
        recyclerView.setAdapter(adapter);

this is refresh from server

 // polling from server
        subscription =  HttpMethods.getInstance().getService(SacredsunService.class)
                .getDeviceBasicData(WORK_SHOP_NAME)
                .compose(RxHelper.io_main())
                .retryWhen(errors -> errors.flatMap(error -> Observable.timer(5, TimeUnit.SECONDS)))
                .repeatWhen(completed -> completed.delay(5, TimeUnit.SECONDS))
                .subscribe((r) -> {
                    Log.d(LOG_TAG,"onNext");
                   //   this is set value
                    list.clear();
                    list.addAll(r.getItems());
                    adapter.notifyDataSetChanged();
                },(e) -> {
                    e.printStackTrace();
                },() -> {
                    Log.d(LOG_TAG,"completed");
                });

display like this
picture

thanks !!!

I have solve this question 😄 :