经过几个小时的研究,我终于咨询了官方的帮助.
我有一个完美的RecyclerView.Adapter和RecyclerView.ViewHolders.但由于某些原因我不明白,RecyclerView.Adapter.onBindViewHolder未正确调用.
private class AttendeeAdapter extends RecyclerView.Adapter<AttendeeHolder> {
/*FIELDS*/
private List<Attendee> mAttendeeList;
/*CONSTRUCTORS*/
public AttendeeAdapter(List<Attendee> attendees) {
mAttendeeList = attendees;
//Log.i(TAG, "AttendeeAdapter size: " + getItemCount());
}
Run Code Online (Sandbox Code Playgroud)
根据Log消息(项目计数作为预期列表的大小),我假设AttendeeAdapter已正确实例化.
所以我希望onBindViewHolder(VH,int)方法的调用次数与List的大小相同,但事实并非如此.该方法仅被称为ONCE!
/*METHODS*/
@Override
public AttendeeHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
View itemView = layoutInflater.inflate(R.layout.list_attendee, parent, false);
return new AttendeeHolder(itemView);
}
@Override
public void onBindViewHolder(AttendeeHolder holder, int position) {
Attendee attendee = mAttendeeList.get(position);
holder.bindAttendee(attendee, position);
Log.i(TAG, "Binding ViewHolder #" + position);
/* Binding ViewHolder #0 and that's it */ …
Run Code Online (Sandbox Code Playgroud) dependencies android android-recyclerview android-studio-2.0