在RecyclerView中,当所有的onCreateViewHolder方法都完成时,可以通过以下方式通知:
public interface OnAllViewCreatedListener {
void onAllViewCreated();
}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private OnAllViewCreatedListener mListener;
public MyAdapter(OnAllViewCreatedListener listener) {
mListener = listener;
}
// ...
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// 创建ViewHolder
ViewHolder viewHolder = new ViewHolder(...);
// 其他操作
// ...
// 当ViewHolder创建完成时,通知接口
if (mListener != null && getItemCount() == viewHolderCount) {
mListener.onAllViewCreated();
}
return viewHolder;
}
}
public class MainActivity extends AppCompatActivity implements OnAllViewCreatedListener {
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = findViewById(R.id.recyclerView);
// 创建适配器,并传入接口实例
MyAdapter adapter = new MyAdapter(this);
recyclerView.setAdapter(adapter);
// 设置布局管理器等
// ...
}
@Override
public void onAllViewCreated() {
// 所有ViewHolder都创建完成时的操作
// ...
}
}
public interface AllViewCreatedObserver {
void onAllViewCreated();
}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<AllViewCreatedObserver> mObservers = new ArrayList<>();
public void registerObserver(AllViewCreatedObserver observer) {
mObservers.add(observer);
}
public void unregisterObserver(AllViewCreatedObserver observer) {
mObservers.remove(observer);
}
// ...
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// 创建ViewHolder
ViewHolder viewHolder = new ViewHolder(...);
// 其他操作
// ...
// 当ViewHolder创建完成时,通知观察者
if (getItemCount() == viewHolderCount) {
for (AllViewCreatedObserver observer : mObservers) {
observer.onAllViewCreated();
}
}
return viewHolder;
}
}
public class MainActivity extends AppCompatActivity implements AllViewCreatedObserver {
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = findViewById(R.id.recyclerView);
// 创建适配器
MyAdapter adapter = new MyAdapter();
// 注册观察者
adapter.registerObserver(this);
recyclerView.setAdapter(adapter);
// 设置布局管理器等
// ...
}
@Override
public void onAllViewCreated() {
// 所有ViewHolder都创建完成时的操作
// ...
}
}
以上是两种常见的通知所有onCreateViewHolder方法都完成的方式,可以根据具体需求选择适合的方法。在实际开发中,可以根据业务逻辑进行相应的处理,例如加载数据、显示界面等。
领取专属 10元无门槛券
手把手带您无忧上云