• RecyclerView


    
    
     compile 'com.android.support:recyclerview-v7:24.1.1'
    
    
    
    package com.example.myshop;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.support.v7.widget.DefaultItemAnimator;
    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 android.view.View;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class RecyclerviewActivity extends AppCompatActivity {
        private RecyclerView mRecyclerView;
        private List<String> datas=new ArrayList<>();
        private MyAdapter mAdapter;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_recyclerview);
            mRecyclerView= (RecyclerView) findViewById(R.id.recyclerView);
            initDatas();
            mAdapter=new MyAdapter(datas);
            mRecyclerView.setAdapter(mAdapter);
            mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    
            mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST));
            mRecyclerView.setItemAnimator(new DefaultItemAnimator());
    
            mAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
                @Override
                public void onClick(View c, int position, String city) {
                    Toast.makeText(RecyclerviewActivity.this, "city:"+city+",position:"+position, Toast.LENGTH_SHORT).show();
                }
            });
    
    
        }
        private void initDatas(){
            datas.add("New York");
            datas.add("Boston");
            datas.add("Washington");
            datas.add("San Francisco");
            datas.add("Chicago");
            datas.add("Phoneix");
            datas.add("New York");
            datas.add("Boston");
            datas.add("Washington");
            datas.add("San Francisco");
            datas.add("Chicago");
            datas.add("Phoneix");
            datas.add("New York");
            datas.add("Boston");
            datas.add("Washington");
            datas.add("San Francisco");
            datas.add("Chicago");
        }
    }
    package com.example.myshop;
    
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.TextView;
    
    import java.util.List;
    
    /**
     * Created by Administrator on 2016/10/21.
     */
    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
        private List<String> mDatas;
        private LayoutInflater inflater;
        private OnItemClickListener listener;
        public void setOnItemClickListener(OnItemClickListener listener ){
            this.listener=listener;
        }
        public MyAdapter(List<String> datas){
            mDatas=datas;
        }
        //创建ViewHolder,相当于listView Adapter的getView方法
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            inflater=LayoutInflater.from(parent.getContext());
            View view=inflater.inflate(R.layout.item,parent,false);
            return new ViewHolder(view);
        }
        //数据绑定
        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
    
            holder.textView.setText(mDatas.get(position));
        }
        //数据的长度
        @Override
        public int getItemCount() {
            return mDatas.size();
        }
    
        //自定义添加数据方法
        public void addData(int position,String city){
            mDatas.add(position,city);
            notifyItemInserted(position);
        }
    
        //自定义删除数据方法
        public void removeData(int position){
            mDatas.remove(position);
            notifyItemRemoved(position);
        }
        //ViewHolder
        class ViewHolder extends RecyclerView.ViewHolder{
    
            private TextView textView;
            public ViewHolder(View itemView) {
                super(itemView);
                textView= (TextView) itemView.findViewById(R.id.text);
                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (listener!=null){
                            listener.onClick(v,getLayoutPosition(),mDatas.get(getLayoutPosition()));
                        }
                    }
                });
               // textView.setOnClickListener();
            }
        }
    
        //自定义点击事件
        interface OnItemClickListener{
            void onClick(View c,int position,String city);
        }
    
    }
    package com.example.myshop;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.graphics.Canvas;
    import android.graphics.Rect;
    import android.graphics.drawable.Drawable;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    import android.util.Log;
    import android.view.View;
    
    /**
     * Created by Administrator on 2016/10/21.
     */
    public class DividerItemDecoration extends RecyclerView.ItemDecoration {
        private static final int[] ATTRS = new int[]{
                android.R.attr.listDivider
        };
    
        public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;
    
        public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;
    
        private Drawable mDivider;
    
        private int mOrientation;
    
        public DividerItemDecoration(Context context, int orientation) {
            final TypedArray a = context.obtainStyledAttributes(ATTRS);
            mDivider = a.getDrawable(0);
            a.recycle();
            setOrientation(orientation);
        }
    
        public void setOrientation(int orientation) {
            if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {
                throw new IllegalArgumentException("invalid orientation");
            }
            mOrientation = orientation;
        }
    
        @Override
        public void onDraw(Canvas c, RecyclerView parent) {
           // Log.v("recyclerview - itemdecoration", "onDraw()");
    
            if (mOrientation == VERTICAL_LIST) {
                drawVertical(c, parent);
            } else {
                drawHorizontal(c, parent);
            }
    
        }
    
    
        public void drawVertical(Canvas c, RecyclerView parent) {
            final int left = parent.getPaddingLeft();
            final int right = parent.getWidth() - parent.getPaddingRight();
    
            final int childCount = parent.getChildCount();
            for (int i = 0; i < childCount; i++) {
                final View child = parent.getChildAt(i);
                android.support.v7.widget.RecyclerView v = new android.support.v7.widget.RecyclerView(parent.getContext());
                final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                        .getLayoutParams();
                final int top = child.getBottom() + params.bottomMargin;
                final int bottom = top + mDivider.getIntrinsicHeight();
                mDivider.setBounds(left, top, right, bottom);
                mDivider.draw(c);
            }
        }
    
        public void drawHorizontal(Canvas c, RecyclerView parent) {
            final int top = parent.getPaddingTop();
            final int bottom = parent.getHeight() - parent.getPaddingBottom();
    
            final int childCount = parent.getChildCount();
            for (int i = 0; i < childCount; i++) {
                final View child = parent.getChildAt(i);
                final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
                        .getLayoutParams();
                final int left = child.getRight() + params.rightMargin;
                final int right = left + mDivider.getIntrinsicHeight();
                mDivider.setBounds(left, top, right, bottom);
                mDivider.draw(c);
            }
        }
    
        @Override
        public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) {
            if (mOrientation == VERTICAL_LIST) {
                outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
            } else {
                outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
            }
        }
    }
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:gravity="center"
        android:padding="10dp"
        android:background="#f0f"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textColor="#fff"
            android:textSize="20sp"
            android:text="1"/>
    
    </LinearLayout>
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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"
        android:gravity="center"
        tools:context="com.example.myshop.RecyclerviewActivity">
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_gravity="center"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
        </android.support.v7.widget.RecyclerView>
    </LinearLayout>

  • 相关阅读:
    134. Gas Station
    135. Candy
    137. Single Number II
    136. Single Number
    138. Copy List with Random Pointer
    140. Word Break II(hard)
    139. Word Break
    笔试面试知识点
    OA的一些概念
    实验记录贴 —— 账号同步实验 RTX 和 LDAP(AD域)
  • 原文地址:https://www.cnblogs.com/jiang2538406936/p/5983728.html
Copyright © 2020-2023  润新知