我有一个textviews
中有5个progressbar
和1个recyclerview
的自定义列表项。
我想每秒更新一个listItem的Progressbar
。
为此,我使用了Runnable
和Handler
progressHandler.postDelayed( runnable ,1000);
在可运行的run
方法中,我更新了listItem并在RecyclerView.Adapter
子类中进行了设置
this.mAdapter.refresh(position, listInfo);
适配器中的刷新方法如下
public void refresh(int position, ListInfo item){
this.filteredData.set(position, item);
notifyItemChanged(position);
}
这有效并每秒更新自定义listItem。
但是问题是,它还会更新ListItem中的5个文本视图,并且列表项也会更新
有什么方法可以只更新listItem中的进度条吗?
答案 0 :(得分:0)
除了更新整个列表项外,您可以做的是在适配器类之外而不是
this.mAdapter.refresh(position, listInfo);
使用此
View view = recyclerView.getChildAt(position - linearLayoutManager.findFirstVisibleItemPosition());// linearLayoutManager is recyclerview's layout manager
if (view != null) {
ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.progress_bar);
progressBar.postDelayed( runnable ,1000);
}