RecyclerView需要很长时间才能加载

cry*_*sis 4 android android-recyclerview

我正在为500件物品创建一个回收者视图.它为每个项目调用onCreateViewHolder和onBindViewHolder并且加载时间太长.由于这个原因,用户界面跳过大约522帧.如何让它加载更快?

public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
      if(holder.getItemViewType() == SHUFFLE_ROW) {
           Log.d(TAG, "Position " + position);
           if(searchClicked) {
                    final SearchBoxHolder searchHolder = (SearchBoxHolder) holder;
                    searchHolder.backIcon.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                         }
                }
                else {
                    ShuffleAllViewHolder shuffleHolder = (ShuffleAllViewHolder) holder;
                    shuffleHolder.numOfSongs.setText(mSongList.size() + " Songs");
                }


            }
else if(holder.getItemViewType() == SONG_ROW) {
                ListViewHolder listViewHolder = (ListViewHolder) holder;
                Song currentSong = mSongList.get(position-1);
                listViewHolder.albumTitle.setText(currentSong.getTitle());
                listViewHolder.albumArtist.setText(currentSong.getArtist());
                Picasso.with(mContext).load(currentSong.getAlbumArt()).placeholder(R.drawable.placeholder)
                        .resize(70, 70)
                        .centerCrop()
                        .into(listViewHolder.albumImage);
            }
}

public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if(viewType == SHUFFLE_ROW) {
                if(searchClicked) {
                    view = LayoutInflater.from(parent.getContext()).inflate(R.layout.search_row, parent, false);

                    return new SearchBoxHolder(view);
                }
                else {
                    view = LayoutInflater.from(parent.getContext()).inflate(R.layout.shuffle_all_row, parent, false);

                    return new ShuffleAllViewHolder(view);
                }
            }
            else {
                view = LayoutInflater.from(parent.getContext()).inflate(R.layout.song_row, parent,
                        false);
                return new ListViewHolder(view);
            }


    public int getItemViewType(int position) {
        if(position == 0) {
            return SHUFFLE_ROW;
        }
        else return SONG_ROW;
    }
Run Code Online (Sandbox Code Playgroud)

我不明白为什么加载这么长时间.

cry*_*sis 14

我在RecyclerView里面使用ScrollView它导致它像蜗牛一样加载.刚刚删除了scrollview,一切都像魅力一样.