张萌&韩墨羽——Recyclerview

Recyclerview

Recyclerview
RecyclerView比ListView的优势:
1.RecyclerView比listview实现效果更多
2.RecycelrView支持多布局;
3.RecyclerView根据项目需要插拔功能

二.重要的方法

1.RecyclerView横向滑动:
LinearLayoutManager.HORIZONTAL横向滑动LinearLayoutManager.VERTICAL垂直滑动

2.RecyclerView.Adapter中刷新方法区别:
notifyDataSetChanged();整体刷新+没有动画效果
notifyItemInserted(int position,Object data):有动画效果+添加一条数据在position位置
notifyItemRemoved(position);有动画效果+删除一条数据并刷新
3.RecyclerView多布局展示:
public int getItemViewType(int position)返回当前数据的itemview类型
4.RecyclerView常见方法:
LinearLayoutManager:recyclerview线性管理器(垂直水平方向);
GridLayoutManager:网格布局管理器;
StaggeredGridLayoutManager:瀑布流布局管理器;
RecyclerView.setLayoutManager(LayoutManager manager):添加布局管理器
RecyclerView.addItemDecoration(ItemDecoration decoration):添加分割线
RecyclerView.setItemAnimator(ItemAnimator animator):添加动画方法

package com.example.jxxapplication.util7;

import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.DividerItemDecoration;
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.widget.LinearLayout;

import com.example.jxxapplication.R;

import java.util.ArrayList;

public class Main2Activity extends AppCompatActivity {
private RecyclerView recyclerviewId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);

    recyclerviewId = findViewById(R.id.recyclerview_id);

    LinearLayoutManager manager = new LinearLayoutManager(this);
    manager.setOrientation(LinearLayout.VERTICAL);//列表

    GridLayoutManager layoutManager = new GridLayoutManager(this, 2);

    StaggeredGridLayoutManager gridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);

    recyclerviewId.setLayoutManager(layoutManager);

    ArrayList<Integer> integers = new ArrayList<>();
    integers.add(R.drawable.weitwo);
    integers.add(R.drawable.weitwo);
    integers.add(R.drawable.weitwo);
    integers.add(R.drawable.weitwo);
    integers.add(R.drawable.weitwo);
    integers.add(R.drawable.weitwo);
    integers.add(R.drawable.weitwo);
    integers.add(R.drawable.weitwo);

    MyAdpter adpter = new MyAdpter(integers, this);
    recyclerviewId.setAdapter(adpter);

    DefaultItemAnimator defaultItemAnimator = new DefaultItemAnimator();
    defaultItemAnimator.setAddDuration(2000);
    defaultItemAnimator.setRemoveDuration(2000);
    recyclerviewId.setItemAnimator(defaultItemAnimator);//添加删除和添加的动画

    DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);

// dividerItemDecoration.setDrawable(new ColorDrawable(234234));
recyclerviewId.addItemDecoration(dividerItemDecoration);
}
}

适配器代码

package com.example.jxxapplication.util7;

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

import com.example.jxxapplication.R;

import java.util.ArrayList;

public class MyAdpter extends RecyclerView.Adapter<MyAdpter.MyViewHolder> {
ArrayList strings;
Context context;

public MyAdpter(ArrayList<Integer> strings, Context context) {
    this.strings = strings;
    this.context = context;
}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View itemView = LayoutInflater.from(context).inflate(R.layout.rejxx, null);
    MyViewHolder viewHolder = new MyViewHolder(itemView);
    return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder,final int i) {
    ViewGroup.LayoutParams params = myViewHolder.imageView.getLayoutParams();
    params.height = (int) (Math.random()*801)+100;
    myViewHolder.imageView.setLayoutParams(params);
    myViewHolder.imageView.setImageResource(strings.get(i));
    myViewHolder.imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            strings.remove(i);
            notifyItemRemoved(i);//更新
            notifyItemChanged(i,strings.size());
        }
    });
    myViewHolder.imageView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            strings.add(R.mipmap.ic_launcher);
            notifyItemInserted(i);
            return true;
        }
    });
}

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

class MyViewHolder extends RecyclerView.ViewHolder{
    ImageView imageView;
     MyViewHolder(@NonNull View itemView) {
        super(itemView);
        imageView = itemView.findViewById(R.id.jxximage_id);
    }
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值