2016-04-03 68 views
1

我想添加快速滚动功能(如在Android的联系人应用程序或在WhatsApp联系人)到我的RecyclerView?如何添加一个快速滚动滚动条到Recyclerview没有3rd-Libraries

我也会使用listview,但我需要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); 
     } 
    } 
} 

谢谢!

回答

0

在你的代码将是注释行的问题:

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

来处理这一点,你有2个解决方案:

1)如果u限制了已知的图像量小,你可以创建位图/绘制一次初始化时,那么你只需要引用那些。

2)创建一个位图缓存,智能的方式来解码位图以及可重用的位图池和池机制。这不是微不足道的,这是第三方库为你做的。我不会建议你自己实施它。