RecycleView的使用(一)(转)

最近,笔者花了很多时间学习了一些Google官方推荐的RecycleView的用法,发现相比于原来的ListView,RecycleView的功能实在是太强大,很值得大家去学习一下。

基本的使用

我们就不讲如何导入包什么的了吧,我们直接进入主题。

xml
<android.support.v7.widget.RecyclerView    
    android:id="@+id/recycleview"    
    android:layout_width="match_parent"    
    android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>

我们在activity_main中添加以上这些代码,这里几乎与我们经常写的ListView 没有什么区别。

adapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{    
  private List<String> dataLists = new ArrayList<>();       

    public MyAdapter(List<String> data){
          dataLists =data;
  }
   @Override    
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {       

       View view = View.inflate(parent.getContext(),R.layout.item_normal, null);        ViewHolder holder = new ViewHolder(view);        
      return holder;   
 }    
@Override    
    public void onBindViewHolder(ViewHolder holder, int position) {            
  holder.mTextView.setText(dataLists.get(position));   
 }    
@Override    
    public int getItemCount() {       
     return  dataLists == null ? 0 : dataLists.size();    
  }    

    public static class ViewHolder extends RecyclerView.ViewHolder {                                     
       public TextView mTextView;       
       public ViewHolder(View itemView) { 
           super(itemView);           
           mTextView = (TextView) 
           itemView.findViewById(R.id.item_normal_tv);   
     }   
 }
}

上面可以看出,Adapter里面规定我们必须使用ViewHolder来加载我们的Item界面。

  • onCreateViewHolder
  • onBindViewHolder

这两个方法可以理解为是将原本ListView的getView()方法解体了,可以看见,我们在onCreateViewHolder里面绘制我们的View,然后再onBindViewHolder里面处理我们的数据,是不是感觉代码比我们的ListView少多了呢,哈哈。

Activity
private RecyclerView recyclerView;
private List<String> stringList= new ArrayList()<>;
---------------------------------------------------------
//随便添加一点数据....
recyclerView = (RecyclerView) findViewById(R.id.recycleview);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
// mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));//这里用线性宫格显示 类似于grid view
// mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, OrientationHelper.VERTICAL));
recyclerView.setAdapter(new MyAdapter(stringList));

简单的几步,我们的RecycleView就已经实现完了,还有两种的格式,大家可以自己去试一下,可以很方便的实现了GridView的效果。
我们展示到我们的虚拟机上


Paste_Image.png

是不是就已经出现了呢,相比ListView,RecycleView的处理更加简单,并且更灵活好用,它将数据、排列方式、数据的展示方式都分割开来,因此可扩展度很高~



链接:http://www.jianshu.com/p/18f6eb02f11d

原文地址:https://www.cnblogs.com/jianglijs/p/7456452.html