RecycleView的使用方法

RecycleView是5.0推出的新特性,它的功能比listView更加的强大。现在很多的App都已经使用RecycleView。下面介绍下它的基本用法。

1.在布局文件中设置

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.recycleviewdemo.MainActivity">
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="120dp"
        android:layout_centerVertical="true"
        android:background="#FF0000"
        android:scrollbars="none"
        android:id="@+id/id_recyclerview_horizotal"
        />

</RelativeLayout>
2.在MainActivity中进行初始化
package com.example.recycleviewdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private RecyclerView mRecyclerView;
    private GalleryAdapter mAdapter;
    private List<Integer> mDatas;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initDatas();
        //得到控件
        mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview_horizotal);
        //设置布局管理器
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);//线性布局管理器
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        //实现GridView的布局效果new GridLayoutManager(this,num);中第一个参数是上下文,第二个参数是行列数
      //  GridLayoutManager gridLayoutManager = new GridLayoutManager(this,4);
       //实现瀑布流的效果,第一个参数是列数,第二个参数是方向
        // StaggeredGridLayoutManager staggeredGridLayoutManager=new StaggeredGridLayoutManager(2,LinearLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(linearLayoutManager);
        //设置适配器
        mAdapter = new GalleryAdapter(this, mDatas);
        mAdapter.setOnItemClickListener(new GalleryAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Toast.makeText(MainActivity.this, position+"", Toast.LENGTH_SHORT).show();
            }
        });
        mRecyclerView.setAdapter(mAdapter);
    }

    private void initDatas() {
        mDatas=new ArrayList<Integer>(Arrays.asList(R.drawable.recommend_30,R.drawable.recommend_31,
                R.drawable.recommend_32,R.drawable.recommend_33,R.drawable.recommend_34,
                R.drawable.recommend_35,R.drawable.recommend_36,R.drawable.recommend_37,
                R.drawable.recommend_38
                ));
    }

}

3.创建适配器
package com.example.recycleviewdemo;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

/**
 * Created by Administrator on 2016/10/7.
 */
public class GalleryAdapter extends RecyclerView.Adapter <GalleryAdapter.ViewHolder>{
    private LayoutInflater mInflater;
    private List<Integer> mDatas;

    /**
     *
     * @param context
     * @param datas
     */

    public GalleryAdapter(Context context,List<Integer> datas) {
        mInflater = LayoutInflater.from(context);
        mDatas = datas;
    }

    /**
     * ItemClick的回调接口
     *
     */
    private OnItemClickListener mOnItemClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.mOnItemClickListener = onItemClickListener;
    }

    public interface OnItemClickListener{
        void onItemClick(View view, int position);

    }
    public static class ViewHolder extends RecyclerView.ViewHolder{

        public ViewHolder(View itemView) {
            super(itemView);
        }
        ImageView mImageView;
        TextView mTextView;
    }

    @Override

    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view;
        view = mInflater.inflate(R.layout.item_recycler, parent, false);
        ViewHolder viewHolder = new ViewHolder(view);
        viewHolder.mImageView = (ImageView) view.findViewById(R.id.id_index_gallery_item_iamge);

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(final ViewHolder viewHolder,final  int position) {
        viewHolder.mImageView.setImageResource(mDatas.get(position));
        //如果设置了回调,则设置点击事件
        if (mOnItemClickListener!=null){
            viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mOnItemClickListener.onItemClick(viewHolder.itemView,position);
                }
            });
        }
    }

    @Override
    public int getItemCount() {
        return mDatas.size();
    }
}
adapter的item
<?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="120dp">
    <ImageView
        android:id="@+id/id_index_gallery_item_iamge"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_margin="5dp"
        android:scaleType="centerCrop"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/id_index_gallery_item_iamge"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="5dp"
        android:layout_marginTop="5dp"
        android:textColor="#ff0000"
        android:text="some info"
        android:textSize="12dp"

        />
</RelativeLayout>
然后运行到模拟器上.就可以看到recycleView实现的简单效果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值