Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有第三个库的情况下向Recyclerview添加快速滚动条_Java_Android_Android Recyclerview_Fastscroll - Fatal编程技术网

Java 如何在没有第三个库的情况下向Recyclerview添加快速滚动条

Java 如何在没有第三个库的情况下向Recyclerview添加快速滚动条,java,android,android-recyclerview,fastscroll,Java,Android,Android Recyclerview,Fastscroll,我想将快速滚动功能(如Android联系人应用程序或Whatsapp联系人)添加到我的RecyclerView 我也会使用listview,但我需要在相同布局的应用程序中使用卡 如果实现快速滚动到Recyclerview太困难,那么使用ViewStub也是一个选项,还是不 我的RecycleServiceAdapter: public class SongRecyclerViewAdapter extends RecyclerView.Adapter<SongRecyclerViewAda

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

我也会使用listview,但我需要在相同布局的应用程序中使用

如果实现快速滚动到Recyclerview太困难,那么使用ViewStub也是一个选项,还是不

我的RecycleServiceAdapter:

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);
        }
    }
}
公共类SongRecycleServiceAdapter扩展了RecycleView.Adapter{
私人宋体;
公共歌曲回收服务适配器(歌曲[]歌曲){
宋=歌曲;
}
@凌驾
public Holder onCreateViewHolder(视图组父级,int-viewType){
View-View=LayoutInflater.from(parent.getContext()).flate(R.layout.adapter\u songview,parent,false);
支架=新支架(视图);
报税表持有人;
}
@凌驾
公共无效onBindViewHolder(Holder Holder,内部位置){
//holder.imvSong.setImageResource(R.drawable.standardartwork);
holder.txvSongTitle.setText(sSongs[position].getTitle());
holder.txvSongInfo.setText(sSongs[position].getArtists());
}
@凌驾
public int getItemCount(){
返回SSONG!=null?SSONG.length:0;
}
公共类持有者扩展了RecyclerView.ViewHolder{
线性布局线性布局;
ImageView imvSong;
TextView txvSongTitle;
TextView txvSongInfo;
公众持有人(视图布局){
超级(布局);
线性布局=(线性布局)布局;
imvSong=(ImageView)layout.findviewbyd(R.id.imvSong);
txvSongTitle=(TextView)layout.findviewbyd(R.id.adap_txvSongTitle);
txvSongInfo=(TextView)layout.findviewbyd(R.id.txvSongInfo);
}
}
}

谢谢

代码中的问题可能是注释行:

        //holder.imvSong.setImageResource(R.drawable.standardartwork);
要处理此问题,您有两种解决方案:

1) 如果您的已知图像数量有限,则可以在初始化时创建一次位图/可绘制图像,然后只需引用这些图像即可


2) 创建位图缓存,这是一种解码位图的智能方法,以及可重用的位图池和池机制。这不是小事,这是第三方库为您所做的。我不建议您自己实现它。

代码中的问题是注释行:

        //holder.imvSong.setImageResource(R.drawable.standardartwork);
要处理此问题,您有两种解决方案:

1) 如果您的已知图像数量有限,则可以在初始化时创建一次位图/可绘制图像,然后只需引用这些图像即可

2) 创建位图缓存,这是一种解码位图的智能方法,以及可重用的位图池和池机制。这不是小事,这是第三方库为您所做的。我不建议自己实施它