Android recycleview+cardview



第一步:导入依赖:recycleview和cardview

compile 'com.android.support:recyclerview-v7:24.2.1'
compile 'com.android.support:cardview-v7:24.2.1'
compile 'com.android.support:appcompat-v7:24.2.1'
第二部:xml中recycleview和cardview(item)

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/title"
    android:id="@+id/recycleView"></android.support.v7.widget.RecyclerView>


cardview:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"


    app:cardBackgroundColor="#ffffff"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
<TextView
    android:textColor="#9b9b9b"
    android:textSize="15.0sp"
android:layout_centerVertical="true"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="20dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Cisco"
    android:id="@+id/text"/>
    <ImageView
        android:id="@+id/wifiLeve"
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:layout_marginRight="20dp"
        android:layout_width="22dp"
        android:layout_height="15dp"
android:background="@drawable/one"
        />
    </RelativeLayout>
</android.support.v7.widget.CardView>


第三部:cardview的属性
android:cardCornerRadius
在xml文件中设置card圆角的大小
CardView.setRadius
在代码中设置card圆角的大小
android:cardBackgroundColor
在xml文件中设置card背景颜色
android:elevation
在xml文件中设置阴影的大小
card_view:cardElevation
在xml文件中设置阴影的大小
card_view:cardMaxElevation
在xml文件中设置阴影最大高度
card_view:cardCornerRadius
在xml文件中设置卡片的圆角大小
card_view:contentPadding
在xml文件中设置卡片内容于边距的间隔 
card_view:contentPaddingBottom
在xml文件中设置卡片内容于下边距的间隔 
card_view:contentPaddingTop
在xml文件中设置卡片内容于上边距的间隔  
card_view:contentPaddingLeft
在xml文件中设置卡片内容于左边距的间隔  
card_view:contentPaddingRight
在xml文件中设置卡片内容于右边距的间隔  
card_view:contentPaddingStart
在xml文件中设置卡片内容于边距的间隔起始  
card_view:contentPaddingEnd
在xml文件中设置卡片内容于边距的间隔终止 
card_view:cardUseCompatPadding
在xml文件中设置内边距,V21+的版本和之前的版本仍旧具有一样的计算方式
card_view:cardPreventConrerOverlap 
在xml文件中设置内边距,在V20和之前的版本中添加内边距,这个属性为了防止内容和边角的重叠


  • 第四部分:recycleview adapter
package com.jdhr.crowdfunds.activitygovern;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.TextView;

import com.jdhr.crowdfunds.R;

import java.util.List;

/**
 * Created by Administrator on 2017/4/13.
 */

public class RecycleviewAdapter extends RecyclerView.Adapter<RecycleviewAdapter.MyViewholder>implements View.OnClickListener{
    List<String> mList;
    Context mContext;
    //定义一个点击事件的接口
    public static  interface onRecycleviewItemClickListener {

        void onItemClick(View view , String data);
    }
    private onRecycleviewItemClickListener mOnItemClickListener = null;
    public void setOnItemClickListener(onRecycleviewItemClickListener listener) {
        this.mOnItemClickListener = listener;
    }
    public RecycleviewAdapter(List<String> allWifi, Context mContext) {
        this.mList = allWifi;
        this.mContext = mContext;
    }
    //item的点击事件
    @Override
    public void onClick(View view) {
        if (mOnItemClickListener != null) {
            //注意这里使用getTag方法获取数据
            mOnItemClickListener.onItemClick(view,(String) view.getTag());

        }
    }
    class MyViewholder extends  RecyclerView.ViewHolder{
        TextView actionName;

        public MyViewholder(View itemView) {
            super(itemView);
            actionName= (TextView) itemView.findViewById(R.id.text);

        }
    }

    @Override
    public RecycleviewAdapter.MyViewholder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view= LayoutInflater.from(mContext).inflate(R.layout.item_recycleview,null);

        ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        WindowManager wm = (WindowManager)mContext
                .getSystemService(Context.WINDOW_SERVICE);

        int width = wm.getDefaultDisplay().getWidth();
        int height = wm.getDefaultDisplay().getHeight();
        lp.width=width/2;
             view.setLayoutParams(lp);
        //为item设置点击事件
        view.setOnClickListener(this);
        MyViewholder viewholder=new MyViewholder(view);
        return viewholder;
    }

    @Override
    public void onBindViewHolder(MyViewholder holder, int position) {
        View view=holder.itemView;
        if(view==null){
            Log.e("获取到的view为空","------");
        }else {
            Log.e("获取到的不view为空","------");
        }
        ViewGroup.LayoutParams myLayoutParams=holder.itemView.getLayoutParams();
        if(myLayoutParams==null){
            Log.e("layoutparams为空","layoutparams为空");
        }else {
            Log.e("layoutparams不为空","layoutparams为空");
        }

        //将数据保存在itemview的tag中
        holder.itemView.setTag(mList.get(position));
        holder.actionName.setText(mList.get(position));
    }

    @Override
    public int getItemCount() {
        return mList.size();
    }
}


第五部分:recycleview的item间距
public class RecycleviewItem extends RecyclerView.ItemDecoration{
private int space;

    public RecycleviewItem(int space) {
        this.space = space;
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        outRect.left = space;
        outRect.right = space;
        outRect.bottom = space;
        if(parent.getChildPosition(view) != 0){
            outRect.top = space;
    }
}
}


调用:
  LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
        linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);//设置水平
        recycleview.setLayoutManager(linearLayoutManager);
        recycleview.addItemDecoration(new RecycleviewItem(5));
        MRecycleViewAdapter adapter=new MRecycleViewAdapter(list,getApplicationContext());
        recycleview.setAdapter(adapter);
        adapter.setOnItemClickListener(new MRecycleViewAdapter.onRecycleviewItemClickListener() {
            @Override
            public void onItemClick(View view, String data) {

            }
        });



附加:cardview的操作

<android.support.v7.widget.CardView

        app:cardBackgroundColor="@color/appleGreen"
        app:cardCornerRadius="10dp"
        app:cardMaxElevation="10dp"
        app:cardElevation="5dp"
        app:cardPreventCornerOverlap="true"
        app:cardUseCompatPadding="true">
     </android.support.v7.widget.CardView>
    
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

cardBackgroundColor属性指定CardView的背景色; 
cardCornerRadius属性指定作为边框的圆角矩形的半径; 
cardElevation是阴影大小,MAX~~是最大阴影大小; 
cardUseCompatPadding compat一般是为了兼容设备,保持一样的外观,所以这里就是保持内边距的计算方式一样; 
cardPreventCornerOverlap属性是为了防止卡片内容和边角的重叠;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值