android studio中使用recyclerview小白篇(二)

前面一个说了怎么把这个包引用进来,这一节说怎么做一个简单的例子出来,我也是照着别人的例子写的,然后慢慢改就行了,做好的效果如下图

1.在我们的activity_main中把recyclerview填加进来.

1
2
3
4
5
<android.support.v7.widget.RecyclerView
         android:id= "@+id/recy_list"
         android:dividerHeight= "1dp"
         android:layout_width= "match_parent"
         android:layout_height= "match_parent"  />

然后在相对应的java中增加引用

1
import android.support.v7.widget.RecyclerView;

  

2. 编写一个recyclerview使用的xml文件,直接新建一个layout xml file就可以了,我的叫item_view.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version= "1.0"  encoding= "utf-8" ?>
<RelativeLayout xmlns:android= "http://schemas.android.com/apk/res/android"
     android:layout_width= "match_parent"
     android:layout_height= "wrap_content"
     android:background= "#00bbcc" >
 
     <TextView
         android:layout_width= "wrap_content"
         android:layout_height= "40dp"
         android:textAppearance= "?android:attr/textAppearanceMedium"
         android:text= "Medium Text"
         android:id= "@+id/txt_xs"
         android:layout_alignParentLeft= "true"
         android:gravity= "center_vertical|center_horizontal"  />
     <TextView
         android:layout_width= "120dp"
         android:layout_height= "40dp"
         android:id= "@+id/txt_msg"
         android:text= "Medium Text"
         android:layout_alignParentRight= "true"
         android:gravity= "center_vertical|center_horizontal"
         />
 
</RelativeLayout>

出来的布局样子就是左右分开,左边显示文件名称,右边显示文件状态,效果看上面的图.

 

3.编写一个关于文件的实体类,只需要有个get方法就行了.我的叫filelist.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public  class  filelist {
     private  String Name;   //文件名称
     private  String Zt;     //状态
 
     public  filelist(){
 
     }
     public  filelist(String name,String zt){
         this .Name=name;
         this .Zt=zt;
     }
     public  String getName(){
         return  Name;
     }
     public  String getZt(){
         return  Zt;
     }
}

这个主要用于存放每一行的数据,可以按需要增加,一个和两个有区别,但是两个和五个没啥区别,一个你可以用string,两个就不行了.

 

4. 编写数据适配器,关键的就是这个地方了,原来的例子作者传入的是个list<string>,只能有一个项,为了传入多个项,我们定义了filelist,在这个地方传入了.通过getname,getzt来获取里面的值,加入了隔行变色,其实也可以加入按内容变色,比如文件的状态,如是已阅读,变成一种色,未阅读另一种颜色,在onBindViewHolder中通过判断da.getZt()的值就行了,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import android.content.Context;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
 
import java.util.List;
 
/**
  * Created by user on 2017-07-26.
  */
public  class  myRecycleradatper extends RecyclerView.Adapter<myRecycleradatper.MyViewHolder> {
     private  List<filelist> mDatas;
     private  Context mContext;
     private  LayoutInflater inflater;
 
     public  myRecycleradatper(Context context, List<filelist> datas){
         this . mContext=context;
         this . mDatas=datas;
         inflater=LayoutInflater.  from (mContext);
     }
 
     @Override
     public  int  getItemCount() {
         return  mDatas.size();
     }
     @Override
     public  MyViewHolder onCreateViewHolder(ViewGroup parent,  int  viewType) {
 
         View view = inflater.inflate(R.layout.item_view,parent,  false );
         MyViewHolder holder=  new  MyViewHolder(view);
         return  holder;
     }
 
     @Override
     public  void  onBindViewHolder(MyViewHolder holder, final  int  position) {
         filelist da=mDatas. get (position);
         if (position%2==0){
             //holder.tv.setBackgroundColor(Color.BLUE);
             holder.v.setBackgroundColor(Color.GRAY);
         }
         holder.tv.setText(da.getName());
         holder.msg.setText(da.getZt());
     }
 
     class  MyViewHolder extends RecyclerView.ViewHolder {
         TextView tv;
         TextView msg;
         View v;
         public  MyViewHolder(View view) {
             super(view);
             tv=(TextView) view.findViewById(R.id.txt_xs);
             msg=(TextView)view.findViewById(R.id.txt_msg);
             v=view;
         }
 
     }
}

  

5. 在我们的主界面中装配好数据,然后放入自定义的数据适配器中,为了简单,都是本地数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
private  List<filelist> mDatas;
     private  myRecycleradatper recycleAdapter;
     @Override
     protected  void  onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
 
         mDatas =  new  ArrayList<filelist>();
         filelist fl;
         String zt;
         for  int  i=0; i < 40; i++) {
             if  (i%2==0){
                 zt= "已阅读" ;
             } else {;
                 zt= "未阅读" ;
             }
             fl= new  filelist( "item" +i,zt);
             mDatas.add(fl);
         }
 
         recycleAdapter= new  myRecycleradatper( this ,mDatas);
         RecyclerView recyclerView=(RecyclerView) findViewById(R.id.recy_list);
         LinearLayoutManager layoutManager =  new  LinearLayoutManager( this  );
         recyclerView.setLayoutManager(layoutManager);
        //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
         recyclerView.setHasFixedSize( true );
         //创建并设置Adapter
         recyclerView.setAdapter(recycleAdapter);
         recyclerView.setItemAnimator( new  DefaultItemAnimator());
 
     }
}

  

以前我们在listview中大家使用的较多的是list<map<string,object>>这个,也可以换成自定义的实体类试试,如果在界面布局那一步出了问题,那就得看看你的目标版本和最小版本了.还有主题,默认的主题出不来,需要换一个别的.

我是小白二把刀,欢迎一起交流.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值