我正在使用回收站视图,其中有一些项目包含要加载的复杂自定义组件。加载需要时间,问题是回收器视图调用必要时方法" onBindViewHolder" (在滚动等期间)重新创建视图,因此需要时间再次重新生成所有项目(我不是在谈论项目的XML布局)。所以......对于表现来说并不是很酷。
如何避免重新创建项目?
我试着打电话:
setIsRecyclable
但它没有用。
示例:
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
// CODE 1 : treatments applied to the item view
// the problem is here, I don't want to repeat this code when it's already done
}
答案 0 :(得分:2)
为什么没有一个hashmap存储一个布尔值来指示你是否在该位置执行了操作?
viewDidLoad
答案 1 :(得分:0)
final Handler timerHandler;
timerHandler = new Handler();
Runnable timerRunnable = new Runnable() {
@Override
public void run() { // Here you can update your adapter data
mRecyclerView.invalidate();
My_function();
// mRecyclerView.scrollToPosition(mRecyclerView.getAdapter().getItemCount() - 1);
//mAdapter.notifyDataSetChanged();
timerHandler.postDelayed(this, 3000);
//Toast.makeText(Chat_Activity.this, "Refreace", Toast.LENGTH_SHORT).show();
}
};
timerHandler.postDelayed(timerRunnable, 3000);
答案 2 :(得分:0)
onBindViewHolder
中的
生成Asynctask
并在doInBackground
中执行您的内容设置过程。