1

我想将快速滚动功能(如在 Android 联系人应用程序或 Whatsapp 联系人中)添加到我的 RecyclerView?

我也会使用列表视图,但我需要Cards在我的应用程序中使用相同的布局!

如果实现快速滚动到 Recyclerview 太困难,使用 ViewStub 也是一种选择,或者不是?

我的 RecyclerViewAdapter:

public class SongRecyclerViewAdapter extends RecyclerView.Adapter<SongRecyclerViewAdapter.Holder> {
    private Song[] sSongs;

    public SongRecyclerViewAdapter(Song[] songs) {
        sSongs = songs;
    }

    @Override
    public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_songview, parent, false);

        Holder holder = new Holder(view);

        return holder;
    }

    @Override
    public void onBindViewHolder(Holder holder, int position) {
        //holder.imvSong.setImageResource(R.drawable.standardartwork);
        holder.txvSongTitle.setText(sSongs[position].getTitle());
        holder.txvSongInfo.setText(sSongs[position].getArtists());
    }

    @Override
    public int getItemCount() {
        return sSongs != null ? sSongs.length : 0;
    }

    public class Holder extends RecyclerView.ViewHolder {
        LinearLayout linearLayout;
        ImageView imvSong;
        TextView txvSongTitle;
        TextView txvSongInfo;

        public Holder(View layout) {
            super(layout);

            linearLayout = (LinearLayout) layout;

            imvSong = (ImageView) layout.findViewById(R.id.imvSong);
            txvSongTitle = (TextView) layout.findViewById(R.id.adap_txvSongtitle);
            txvSongInfo = (TextView) layout.findViewById(R.id.txvSongInfo);
        }
    }
}

谢谢!

4

1 回答 1

0

您的代码中的问题将是注释行:

        //holder.imvSong.setImageResource(R.drawable.standardartwork);

要解决这个问题,您有 2 个解决方案:

1)如果您的已知图像数量有限,您可以在初始化时创建一次位图/可绘制对象,然后您只需要参考这些图像。

2)创建位图缓存,解码位图的智能方式以及可重用的位图池和池化机制。这不是微不足道的,这也是 3rd 方库为您所做的。我不建议自己实施。

于 2016-04-03T22:17:02.097 回答