7.1. RecyclerView基本使用
-
7.1. RecyclerView基本使用
7.1.1.RecyclerView简介
7.1.2.RecyclerView的基本用法
7.1.3.分割线
7.1.4.增加删除动画
7.1.5.RecyclerView优点 -
7.3. RecyclerView万能适配器封装
-
7.4. RecyclerView事件处理
7.4.1.点击事件
RecyclerView是什么
从Android 5.0开始,谷歌公司推出了一个用于大量数据展示的新控件RecylerView,可以用来代替传统的ListView,更加强大和灵活。
RecyclerView简介
RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能
RecyclerView的基本用法
MainActivity的代码
线性列表LinearLayoutManager
LinearLayoutManager manager=newLinearLayoutManager(this);
manager.setOrientation(LinearLayoutManager.VERTICAL);//列表
GridLayoutManager网格
GridLayoutManager gridLayoutManager=new GridLayoutManager(this,3);//网格
recyclerView.setLayoutManager(manager);
StaggeredGridLayoutManager瀑布流
StaggeredGridLayoutManager staggeredGridLayoutManager=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); recyclerView.setLayoutManager(staggeredGridLayoutManager);
分割线
recyclerView.addItemDecoration(dividerItemDecoration);//分割线
增加删除动画
recyclerView.setItemAnimator(defaultItemAnimator);//设置删除和添加的动作
DividerItemDecoration dividerItemDecoration=new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
RecyclerView优点
RecyclerView比ListView的优势:
1.RecyclerView比listview实现效果更多
2.RecycelrView支持多布局;
3.RecyclerView根据项目需要插拔功能
RecyclerView万能适配器封装
package com.example.recyclerview;
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 android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
ArrayList<Integer> strings;
Context context;
public MyAdapter(ArrayList<Integer> strings, Context context) {
this.strings = strings;
this.context = context;
}
public MyAdapter(ArrayList<Integer> strings) {
this.strings = strings;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View itemView = LayoutInflater.from(context).inflate(R.layout.list, null);
MyViewHolder viewHolder=new MyViewHolder(itemView);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {
int hightValue =(int)Math.random()*801+500;
ViewGroup.LayoutParams layoutParams = (ViewGroup.LayoutParams) myViewHolder.imageView.getLayoutParams();
myViewHolder.imageView.setLayoutParams(layoutParams);
layoutParams.height = hightValue;
myViewHolder.imageView.setImageResource(strings.get(i));
myViewHolder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"点一下!",Toast.LENGTH_SHORT).show();
}
});
myViewHolder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//删除数据源
strings.remove(i);
//删除动画
notifyItemRemoved(i);
notifyItemRangeChanged(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{
TextView textView; ImageView imageView;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.image);
}
}
}
RecyclerView事件处理
package com.example.recyclerview;
import android.graphics.Canvas;
import android.support.annotation.NonNull;
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.view.View;
import android.widget.LinearLayout;
import java.sql.Driver;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
// LinearLayoutManager manager=new LinearLayoutManager(this);
// manager.setOrientation(LinearLayoutManager.VERTICAL);//列表
// GridLayoutManager gridLayoutManager=new GridLayoutManager(this,3);//网格
// recyclerView.setLayoutManager(manager);
StaggeredGridLayoutManager staggeredGridLayoutManager=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(staggeredGridLayoutManager);
ArrayList<Integer> strings=new ArrayList<>();
strings.add(R.mipmap.aa);
strings.add(R.mipmap.bb);
strings.add(R.mipmap.cc);
strings.add(R.mipmap.dd);
strings.add(R.mipmap.ee);
strings.add(R.mipmap.ff);
strings.add(R.mipmap.gg);
strings.add(R.mipmap.hh);
strings.add(R.mipmap.jj);
strings.add(R.mipmap.hh);
strings.add(R.mipmap.ii);
strings.add(R.mipmap.jj);
strings.add(R.mipmap.kk);
MyAdapter myAdapter=new MyAdapter(strings,this);
recyclerView.setAdapter(myAdapter);
DefaultItemAnimator defaultItemAnimator=new DefaultItemAnimator();
defaultItemAnimator.setAddDuration(2000);
defaultItemAnimator.setRemoveDuration(2000);
recyclerView.setItemAnimator(defaultItemAnimator);//设置删除和添加的动作
DividerItemDecoration dividerItemDecoration=new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
recyclerView.addItemDecoration(dividerItemDecoration);//分割线
点击事件
recycleriew.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
RecyclerView.ItemDecoration itemDecoration=new RecyclerView.ItemDecoration() {
@Override
public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
super.onDraw(c, parent, state);
}
};
技能效果