RecyclerView(滚动控件)的用法

1.首先在build.gradle中添加依赖库

  compile ‘com.android.support:recyclerview-v7:24.2.1‘

2.修改activity_main.xml

<LinearLayout ......
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="maych_parent"
        android:layout_height="match_parent" />
</LinearLayout>

3.类似ListView,新建一个适配器FruitAdapter,定义一个ViewHolder内部类,传入一个View参数,重写onCreateViewHolder()、onBindViewHolder()、getItemCount()

public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder>{
    private List<Fruit> mFruitList;
    static class ViewHolder extends RecyclerView.ViewHolder{
        ImageView Fruitimage;
        TextView FruitName;  //创建ViewHolder内部类
        public ViewHolder(View view){
            super(view);
            fruitImage = (ImageView)findViewById(R.id.fruit_image);
            fruitName = (TextView)findViewById(R.id.fruit_name);
        }
    }
    public FruitAdapter(List<Fruit> fruitList){
         mFruitList = fruitList;
    }  //创建ViewHolder实例
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType){
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }  //为子项赋值
    @Override
    public void onBindViewHolder(ViewHolder holder,int position){
        Fruit fruit = mFruitList.get(position);
        holder.fruitImage.setImageResource(fruit.getImageId());
        holder.fruitName.setText(fruit.getName());
    }  //子项的数目
    @Override
    public int getItemCount(){
        return mFruitList.size();
    }
}

4.在MainAcitivity中编写RecyclerView代码

public class MainActivity extends AppCompatActivity{
    private Lsit<Fruit> fruitList = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initFruits();    //初始化水果数据
        RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recycler_view);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);    //指定布局方式
        FruitAdapter adapter = new FruitAdapter(fruitList);
        recyclerView.setAdapter(adapter);
    }
    private void initFruits(){
        for(int i=0;i<2;i++){
            Fruit apple = new Fruit("Apple",R.drawable.apple_pic);
            fruitList.add(apple);
            ......
        }
    }
}

RecyclerView特殊用法

  ListView只能实现纵向滚动,而RecyclerView可以实现横向和瀑布流。

  横向滚动:

    修改fruit_item.xml中LinearLayout布局方向:android:orientation="vartical";  并将ImageView和TextView设置成水平居中。

    在MainActivity中onCreate()添加:layoutManager.setOrientation(LinearLayoutManger.HORIZONTAL);

  瀑布流:

    调整fruit_item.xml

    在MainActivity中onCreate()添加:staggeredGridLayoutManager layoutManager = staggeredGridLayoutManager(3,StaggeredGridLayoutManger.VERTICAL); //1参:列数,2参:排列方向

RecyclerView的点击事件

  

......
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType){
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false);
        final ViewHolder holder = new ViewHolder(view);
        holder.fruitView.setOnClickListener(new View.onClickListener(){
            @Override
            public void onClick(View v){
                int position = holder.getAdapterPosition();
                Fruit fruit = mFruitList.get(position);
                Toast.makeText(v.getContext(),"you clicked view"+fruit.getName(),Toast.LENGTH_SHORT).show();
            }
        });
        holder.fruitImage.setOnClickListener(new View.onClickListener(){
            @Override
            public void onClick(View v){
                int position = holder.getAdapterPosition();
                Fruit fruit = mFuritList.get(position);
                Toast.makeText(v.getContext(),"you clicked image"+fruit.getName(),Toast.LENGTH_SHORT).show();
            }
        });
        return holder;
    }
......

    

时间: 2024-08-28 02:59:46

RecyclerView(滚动控件)的用法的相关文章

使用RecyclerView实现滚动控件

滚动控件的实现方式有很多, 使用RecyclerView也比较简单. 做了一个简单的年龄滚动控件, 让我们来看看RecyclerView的使用方式, 主要有以下几点: (1) 对齐控件中心位置. (2) 计算滚动距离. (3) 高亮中心视图. (4) 实时显示中心数据. (5) 停止时自动对齐. (6) 滚动时, 设置按钮状态开关. 1. 框架 主要关注RecyclerView部分逻辑. /** * 初始化年龄滑动条 */ private void initAgeList() { LinearL

WPF从我炫系列4---装饰控件的用法

这一节的讲解中,我将为大家介绍WPF装饰控件的用法,主要为大家讲解一下几个控件的用法. ScrollViewer滚动条控件 Border边框控件 ViewBox自由缩放控件 1. ScrollViewer滚动条控件 大家知道在WPF中的一些布局控件中是不带滚动条的,如果里面的内容控件超过了外面布局控件的大小,就不能完全被显示出来,这个时候我们就可以使用滚动条控件,让它滚动显示. 效果图: 默认情况下ScrollViewer是显示垂直滚动条的.但是可以通过属性来控制滚动条的显示. Horizont

一步一步学ios UITextView(多行文本框)控件的用法详解(五5.8)

本文转载至 http://wuchaorang.2008.blog.163.com/blog/static/48891852201232014813990/ 1.创建并初始化 创建UITextView的文件,并在.h文件中写入如下代码: [csharp] view plaincopy #import <UIKit/UIKit.h> @interface TextViewController : UIViewController <UITextViewDelegate> { UITe

SplitContainer 控件详细用法(转)

1.可以将 Windows 窗体 SplitContainer 控件看作是一个复合体,它是由一个可移动的拆分条分隔的两个面板.当鼠标指针悬停在该拆分条上时,指针将相应地改变形状以显示该拆分条是可移动的.使用 SplitContainer 控件,可以创建复合的用户界面(通常,在一个面板中的选择决定了在另一个面板中显示哪些对象).这种排列对于显示和浏览信息非常有用.拥有两个面板使您可以聚合不同区域中的信息,并且用户可以轻松地使用拆分条(也称为"拆分器")调整面板的大小.另外,还可以嵌套多个

Java Me-List控件的用法案例

/** * Java Me-List控件的用法案例 */package com.xushouwei.cn; import java.io.IOException;import javax.microedition.lcdui.Choice;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Display;im

ASP.NET-----Repeater数据控件的用法总结(转)

一.Repeater控件的用法流程及实例: 1.首先建立一个网站,新建一个网页index.aspx. 2.添加或者建立APP_Data数据文件,然后将用到的数据库文件放到APP_Data文件夹中. 3.打开数据库企业管理器,数据库服务器为local(.),然后将APP_Data文件夹中的数据库附加到数据库服务器中. 4.添加Ling to  SQL类. 5.打开视图,服务器资源管理器,右击数据库服务器,选择添加连接,然后选择数据库服务器.数据库类型,及数据库表,然后完成. 6.将需要用到的表,全

MFC中按钮控件的用法笔记(转)

VC学习笔记1:按钮的使能与禁止 用ClassWizard的Member Variables为按钮定义变量,如:m_Button1:则m_Button1.EnableWindow(true); 使按钮处于允许状态m_Button1.EnableWindow(false); 使按钮被禁止,并变灰显示 VC学习笔记2:控件的隐藏与显示 用CWnd类的函数BOOL ShowWindow(int nCmdShow)可以隐藏或显示一个控件. 例1:CWnd *pWnd;pWnd = GetDlgItem(

Android实现图片滚动控件

怎样实现图片滚动器的效果. 今天就总结下.这里我也不多说什么.直接源代码.不懂的直接提问我. 第一种实现方式:利用Gallery,但是这个现在已经过时了.我这里不多介绍了.只贴一个核心类. package com.drocode.swithcer; import java.util.TimerTask; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import

文件上传控件FileUpload用法初步

1 <asp:FileUpload ID="fudTest" runat="server" /> 2 <asp:Button ID="btnUpload" runat="server" Text="上传" OnClick="btnUpload_Click" /> 3 <br /> 4 <asp:Label ID="lblMessage&

Android高级图片滚动控件,编写3D版的图片轮播器

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482089 大家好,好久不见了,最近由于工作特别繁忙,已经有一个多月的时间没写博客了,我也是深感惭愧.那么今天的这篇既然是阔别了一个多月的文章,当然要带来更加给力点的内容了,那么话不多说,赶快进入到今天的正题吧. 说 到图片轮播器,很多的Android应用中都会带有这个功能,比如说网易新闻.淘宝等.最新我们公司的一款应用也加入了这个功能,并且在图片轮播的基础上 还增加了三维立体