Recyclerview

mainactivity布局

<?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.bw.activity.MainActivity">

    <Button
        android:id="@+id/lsit_rcv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello list" />
    <Button
        android:id="@+id/grid_rcv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/lsit_rcv"
        android:text="Hello grid" />
    <Button
        android:id="@+id/Sta_rcv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/grid_rcv"
        android:text="Hello Sta" />

</RelativeLayout>
Recyclerviewactivity布局

<?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.bw.activity.RecyclerviewActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/RecyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </android.support.v7.widget.RecyclerView>
</RelativeLayout>
item布局1,2,3一样
<?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">
    <TextView
        android:id="@+id/item1_list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
package com.bw.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //listview
        findViewById(R.id.lsit_rcv).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //跳转页面
                Intent intent=new Intent(MainActivity.this,RecyclerviewActivity.class);
                //intent携带值
                intent.putExtra("type",1);
                //跳转
                startActivity(intent);
            }
        });
        //gridview
        findViewById(R.id.grid_rcv).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity.this,RecyclerviewActivity.class);
                intent.putExtra("type",2);
                startActivity(intent);
            }
        });
        //瀑布流
        findViewById(R.id.Sta_rcv).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity.this,RecyclerviewActivity.class);
                intent.putExtra("type",3);
                startActivity(intent);
            }
        });
    }
}


Recyclerviewactivity代码逻辑

package com.bw.activity;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;

import com.bw.adapter.RecyclerviewAdapter;

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

import butterknife.Bind;
import butterknife.ButterKnife;

public class RecyclerviewActivity extends AppCompatActivity {

    @Bind(R.id.RecyclerView)
    RecyclerView mRecyclerView;
    List<String> list=new ArrayList<String>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recyclerview);
        ButterKnife.bind(this);
        //为list集合添加数据
        for (int i=0;i<20;i++){
            list.add("满心好事"+i);
        }
        //判断mainactivity传来值,设置mRecyclerView的布局管理器
        if (getIntent().getIntExtra("type",0)==1){
            /**RecyclerView提供了三种内置的LayoutManager:
             * LinearLayoutManager:线性布局,横向或者纵向滑动列表
             * GridLayoutManager:表格布局,支持水平和垂直效果
             * StaggeredGridLayoutManager:流式布局
             */
            //线性布局管理器,参数是本activity的对象
            LinearLayoutManager mLayoutManager=new LinearLayoutManager(this);
            //设置线性布局的方向(Orientation:方向)
            // 参数:LinearLayoutManager.VERTICAL(垂直)或HORIZONTAL(水平)
            mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
            //为Recycleview设置线性布局管理器
            mRecyclerView.setLayoutManager(mLayoutManager);
        }else if (getIntent().getIntExtra("type",0)==2){
            //为Recycleview设置表格布局管理器
            //参数1:本activity的对象,参数2:表格布局的列数
            mRecyclerView.setLayoutManager(new GridLayoutManager(this,2));
        }else if (getIntent().getIntExtra("type",0)==3){
            //参数1:列数,参数2:VERTICAL(垂直)或HORIZONTAL(水平)等
            mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
        }
        //绑定适配器
        mRecyclerView.setAdapter(new RecyclerviewAdapter(this,list));
    }
}
adapter代码逻辑

package com.bw.adapter;

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.TextView;

import com.bw.activity.R;

import java.util.List;

/**
 * Created by Administrator on 2016/11/19 0019.
 */
public class RecyclerviewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    LayoutInflater mLayoutInflater;
    Context context;
    List<String> list;

    /**
     * ① 枚举元素不是变量,而是常数,因此枚举元素又称为枚举常量。因为是常量,所以不能对枚举元素进行赋值。
     * ② 枚举元素作为常量,它们是有值的,C 语言在编译时按定义的顺序使它们的值为,1,2,…。
     * enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat}day;
     * 这时,sun 为 7,mon 为 1,以后元素顺次加 1,所以 sat 就是 6 了。
     */
    //建立枚举 2个item 类型(里面的)
    public enum ITEM_TYPE {
        ITEM1,
        ITEM2,
        ITEM3
    }
    public RecyclerviewAdapter(Context context, List<String> list) {
        this.context=context;
        this.list=list;
        //实例化LayoutInflater
        mLayoutInflater=LayoutInflater.from(context);
    }

    /**
     *该方法中导入布局,实例化VIewHolder
     * @param parent 相当于一个容器
     * @param viewType 第二个参数就是View的类型,可以根据这个类型判断去创建不同item的ViewHolder。
     * @return
     */
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //加载Item View的时候根据不同TYPE加载不同的布局
        //枚举的用法
        if (viewType==ITEM_TYPE.ITEM1.ordinal()){
            return new Item1ViewHolder(mLayoutInflater.inflate(R.layout.item1,parent,false));
        }else if (viewType==ITEM_TYPE.ITEM2.ordinal()){
            return new Item2ViewHolder(mLayoutInflater.inflate(R.layout.item2,parent,false));
        }else{
            return new Item3ViewHolder(mLayoutInflater.inflate(R.layout.item3,parent,false));
        }
    }

    /**
     *绑定VIewHolder,加载数据
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof Item1ViewHolder){
            ((Item1ViewHolder)holder).mTextView.setText(list.get(position));
        }else if (holder instanceof Item2ViewHolder){
            ((Item2ViewHolder)holder).mTextView.setText(list.get(position));
        }else if (holder instanceof Item3ViewHolder){
            ((Item3ViewHolder)holder).mTextView.setText(list.get(position));
        }
    }

    /**
     * 获取数据源的个数
     * @return 总条目数
     */
    @Override
    public int getItemCount() {
        return list == null ? 0 : list.size();
    }
    /**
     * item1的ViewHolder
     */
    public class Item1ViewHolder extends RecyclerView.ViewHolder{
        //item中的控件ID
        TextView mTextView;
        public Item1ViewHolder(View itemView) {
            super(itemView);
            mTextView= (TextView) itemView.findViewById(R.id.item1_list);
        }
    }
    /**
     * item2的ViewHolder
     */
    public class Item2ViewHolder extends RecyclerView.ViewHolder{
        //item中的控件ID
        TextView mTextView;
        public Item2ViewHolder(View itemView) {
            super(itemView);
            mTextView= (TextView) itemView.findViewById(R.id.item2_grid);
        }
    }
    /**
     * item3的ViewHolder
     */
    public class Item3ViewHolder extends RecyclerView.ViewHolder{
        //item中的控件ID
        TextView mTextView;
        public Item3ViewHolder(View itemView) {
            super(itemView);
            mTextView= (TextView) itemView.findViewById(R.id.item3_sta);
        }
    }
}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值