小编SHA*_*AHM的帖子

RecyclerView.onBindViewHolder只调用一次

经过几个小时的研究,我终于咨询了官方的帮助.

我有一个完美的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

28
推荐指数
3
解决办法
9878
查看次数