第一步导入依赖
implementation 'androidx.recyclerview:recyclerview:1.1.0'
第二步创建Bean对象
public class Home_Appliance { private String name; private int photo; public Home_Appliance(String name, int photo) { this.name = name; this.photo = photo; }}
第三步定义item项布局
第四步设置设配器
public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder>
注意HomeAdapter.ViewHolder下面的create、onbind也要改。
*从Activity中获取数据来源
private List<Student> mStudentList;
public StudentAdapter(List<Student> studentList){
mStudentList = studentList;}
*使用ViewHolder优化
class ViewHolder extends RecyclerView.ViewHolder{ ImageView appliance_Prop; // TextView appliance_Name; public ViewHolder(View view){ super(view); appliance_Prop = view.findViewById(R.id.photo); // appliance_Name = view.findViewById(R.id.name); } }
*创建视图
public ViewHolder onCreateViewHolder(@NonNull @NotNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.home_appliance, parent, false); ViewHolder holder = new ViewHolder(view); return holder; }
*绑定数据
Home_Appliance home_appliance = mhomeList.get(position); // holder.appliance_Name.setText(home_appliance.getName()); Glide.with(getContext()) .load(home_appliance.getPhoto()) .centerCrop() .override(200,200) //设置item图片大小 .into(holder.appliance_Prop); ViewGroup.LayoutParams lp = holder.appliance_Prop.getLayoutParams(); // Random ra =new Random(); int a=(int)(100+Math.random()*(200-100+1)); lp.height = a; holder.appliance_Prop.setLayoutParams(lp);
其中viewgroup.Layout代码为设置瀑布流布局item大小
*返回item项个数
public int getItemCount() { return mhomeList.size(); }
*增删item操作
mHomeList.remove(0); //删 adapter.notifyDataSetChanged();
mHomeList.add( 0,refrigerator);//增 adapter.notifyDataSetChanged();
*在onActivityCreate中设置属性
StaggeredGridLayoutManager layoutManager=new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); recyclerView.setLayoutManager(layoutManager); HomeAdapter adapter = new HomeAdapter(mHomeList); recyclerView.setAdapter(adapter);