when i polling data from server refresh view in RecyclerView.Adapter, The view always twinkling
someoneYYYY opened this issue · 1 comments
someoneYYYY commented
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 !!!
someoneYYYY commented
I have solve this question 😄 :