Android-RecyclerView(解析二)

package com.example.recyclerview;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import android.os.Bundle;
import android.app.Activity;
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.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity implements MyAdapter.OnChildClickListener {

    private MyAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RecyclerView recycler=(RecyclerView) findViewById(R.id.recycler);   
        //添加100条假数据
        List<String> list=new ArrayList<String>();
        for(int i=0;i<100;i++){
            list.add(String.format(Locale.CHINA, "第%03d条数据",i));
        }
        adapter=new MyAdapter(this, list);

        /**
         * 在java代码中使用LinearLayoutManager,不在布局文件中使用
         */
        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);//(垂直水平,是否翻转呈现布局)

        GridLayoutManager gridLayoutManager=new GridLayoutManager(this, 3);//(列数)

        //GridLayoutManager可以设置摸个item的样式
//      gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
//          
//          @Override
//          public int getSpanSize(int position) {//占多少列
//              if(position==0){
//                  return 3; //第一行占三列
//              }
//              
//              return 1;//默认占一列
//          }
//      });
        //动画系统  删除动画以及添加动画  不做详细介绍
        DefaultItemAnimator defaultItemAnimator=new DefaultItemAnimator();

        recycler.setLayoutManager(gridLayoutManager);//在xml布局中可以删掉对linearLayoutManager的引用

        recycler.setItemAnimator(defaultItemAnimator);

        recycler.setAdapter(adapter);
        adapter.setOnChildClickListnener(this);
    }
    /**
     * 点击事件
     */
    @Override
    public void onChildClick(RecyclerView parent, View view, int position,
            String data) {
        //将点击的内容数据打印出来
        Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
        //调用删除item方法
        adapter.remove(position);
    }

}

控制间距:

package com.example.recyclerview;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import android.R.color;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
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.RecyclerView.State;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity implements MyAdapter.OnChildClickListener {

    private MyAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RecyclerView recycler=(RecyclerView) findViewById(R.id.recycler);   
        //添加100条假数据
        List<String> list=new ArrayList<String>();
        for(int i=0;i<100;i++){
            list.add(String.format(Locale.CHINA, "第%03d条数据",i));
        }
        adapter=new MyAdapter(this, list);

        /**
         * 在java代码中使用LinearLayoutManager,不在布局文件中使用
         */
        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);//(垂直水平,是否翻转呈现布局)

        GridLayoutManager gridLayoutManager=new GridLayoutManager(this, 3);//(列数)

        //GridLayoutManager可以设置摸个item的样式
//      gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
//          
//          @Override
//          public int getSpanSize(int position) {//占多少列
//              if(position==0){
//                  return 3; //第一行占三列
//              }
//              
//              return 1;//默认占一列
//          }
//      });
        //动画系统  删除动画以及添加动画  不做详细介绍
        DefaultItemAnimator defaultItemAnimator=new DefaultItemAnimator();

        recycler.setLayoutManager(gridLayoutManager);//在xml布局中可以删掉对linearLayoutManager的引用

        recycler.setItemAnimator(defaultItemAnimator);

        recycler.setAdapter(adapter);

        /**
         * 设置行间距
         */
        recycler.addItemDecoration(new RecyclerView.ItemDecoration() {
            //在我们所有控件绘制之前调用的绘制方法
            @Override
            public void onDraw(Canvas c, RecyclerView parent, State state) {
                // TODO Auto-generated method stub
                super.onDraw(c, parent, state);
                //绘制背景
                c.drawColor(color.black);
                //也可以画一个动画
            }
            //在布局上方图片等操作
            @Override
            public void onDrawOver(Canvas c, RecyclerView parent, State state) {
                // TODO Auto-generated method stub
                super.onDrawOver(c, parent, state);

            }
            //分割线
            @Override
            public void getItemOffsets(Rect outRect, View view,
                    RecyclerView parent, State state) {
                // TODO Auto-generated method stub
                super.getItemOffsets(outRect, view, parent, state);
//              //举例子:
//              int position=parent.getChildAdapterPosition(view);
//              outRect.set(0,5*position,0,5*position);//间距越来越大

                //分割线的宽高
                outRect.set(0,5,0,5);//绘制了10个像素的间距  是黑色的
            }

        });

        adapter.setOnChildClickListnener(this);
    }
    /**
     * 点击事件
     */
    @Override
    public void onChildClick(RecyclerView parent, View view, int position,
            String data) {
        //将点击的内容数据打印出来
        Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
        //调用删除item方法
        adapter.remove(position);
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章