安卓的那些事儿-android之RecyclerView的使用,实现列表横向滚动

来源:互联网 发布:免费扫描软件 编辑:程序博客网 时间:2024/05/20 13:37
《安卓的那些事儿》 
    方便自己记忆,也为了方便一些人像我一样到处找方法,把自己平时碰到的一些写代码的事儿记下来,可能也会把一些对安卓使用的看法记下来,或许会很啰嗦,但我保证,肯定都是实用的。
    
    安卓做垂直方向的Litview列表滚动,这个简单,随便一搜一大堆,但实现横向滚动,这个貌似就没那么容易,一开始其实我也是懵逼的,后来看到有人说使用RecyclerView可以实现,研究了一下,基本是满足自己的需求的,简单记录如下:
    
    首先你的界面得定义一个RecyclerView了,这个都知道了:
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical"
       android:layout_gravity="center">
           <android.support.v7.widget.RecyclerView
               android:id="@+id/id_recyclerview1"
               android:layout_width="match_parent"
               android:layout_height="wrap_content" />
</LinearLayout>

然后在Activity或者fragment的oncreate方法里,写上:

LinearLayoutManager = new LinearLayoutManager(this);

lm.setOrientation(LinearLayoutManager.HORIZONTAL);//实现横向的关键点,绝对不能漏

RecyclerView mRecyclerView1 = (RecyclerView)findViewById(R.id.id_recyclerview1);//查找到界面上定义的RecyclerView

mRecyclerView1.setLayoutManager(lm); 

mRecyclerView1.setAdapter(new MyAdapter ());//适配器,定义看下方

    
写个适配器,主要用来加载你定义的子项,就是RecyclerView列表里,你要展示的内容:
class MyAdapter extends RecyclerView.Adapter<MyAdapter .MyViewHolder> {
      @Override
      public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
          View view = LayoutInflater.from(context).inflate(R.layout.my_item, parent,false);//my_item就是你子项的界面,我定义的很简单,只有一个textview
          MyViewHolder holder = new MyViewHolder(view);
          return holder;
      }
    
      @Override
      public void onBindViewHolder(MyViewHolder holder, int position) {
          holder.tv.setText(mDatas.get(position));
      }
    
      @Override
      public int getItemCount() {
          return mDatas.size();
      }
    
      class MyViewHolder extends RecyclerView.ViewHolder {
          TextView tv;
          public MyViewHolder(View view) {
              super(view);
              tv = (TextView) view.findViewById(R.id.id_num);
          }
      }
    }
    
显示的界面my_item我定义的很简单,只有一个textview:  
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
    <TextView
        android:id="@+id/id_num"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="center"
        android:text="1" /> 
</FrameLayout>


对了,我是用android studio的,工程里的gradle里记得添加:

compile 'com.android.support:recyclerview-v7:25.0.1' 

要把recyclerview给引用进来

是不是很简单,其实我也没想到会这么简单,之前看到还有大神去定义了一个横向滚动的listview,我想说,也真不容易,能用android原生的东西实现的,尽量用吧,毕竟这有谷歌的支持,兼容性啥的还是可靠的
阅读全文
0 0
原创粉丝点击