zoukankan      html  css  js  c++  java
  • Android学习——RecyclerView

    RecyclerView的点击事件

    为RecyclerView准备一个适配器,新建FruitAdapter类,让这个适配器继承自RecursiveAction.Adapter

     1 public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {
     2     //定义一个全局变量
     3     private List<Fruit> mFruitList;
     4     //定义一个内部类ViewHolder,ViewHolder要继承RecyclerView.ViewHolder
     5     static class ViewHolder extends RecyclerView.ViewHolder{
     6         View fruitView; //添加fruitView变量来保存子项最外层布局的实例,然后在onCreateViewHolder()方法中注册点击事件
     7         ImageView fruitImage;
     8         TextView fruitName;
     9         //构造函数中要传入一个View参数,这个参数通常是RecyclerView子项的最外层布局,
    10         // 那么就可以通过findViewById()方法来获取到不居中的ImageView和TextView的实例了
    11         public ViewHolder(View view){
    12             super(view);
    13             fruitView = view;
    14             fruitImage = (ImageView) view.findViewById(R.id.fruit_image);
    15             fruitName = (TextView) view.findViewById(R.id.fruit_name);
    16         }
    17     }
    18     //FruitAdapter中也有一个构造函数,这个方法用于把展示的数据源传进来,并赋值给一个全局变量mFruitList,后续操作都在这个数据源上进行
    19     public FruitAdapter(List<Fruit> fruitList){
    20         mFruitList = fruitList;
    21     }
    22     //由于RecyclerView继承自RecyclerView.Adapter,那么就必须重写onCreateViewHolder(),onBindViewHolder(),getItemCount()方法
    23     //onCreateViewHolder()方法用于创建ViewHolder实例,
    24     //在这个方法内将fruit_item布局加载进来,然后创建一个ViewHolder实例,并将加载出来的布局传入构造函数中,最后将ViewHolder实例返回
    25     @Override
    26     public ViewHolder onCreateViewHolder( ViewGroup parent, int viewType) {
    27         View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false);
    28         final  ViewHolder holder = new ViewHolder(view);
    29         //以下两个点击事件中先获取了用户点击的position,然后通过position拿到相应的Fruit实例
    30         //为最外层布局注册点击事件
    31         holder.fruitView.setOnClickListener(new View.OnClickListener() {
    32             @Override
    33             public void onClick(View v) {
    34                 int position = holder.getAdapterPosition();
    35                 Fruit fruit = mFruitList.get(position);
    36                 Toast.makeText(v.getContext(),"you clicked view" + fruit.getName(),Toast.LENGTH_SHORT).show();
    37             }
    38         });
    39         //为布局内图片注册点击事件
    40         holder.fruitImage.setOnClickListener(new View.OnClickListener() {
    41             @Override
    42             public void onClick(View v) {
    43                 int position = holder.getAdapterPosition();
    44                 Fruit fruit = mFruitList.get(position);
    45                 Toast.makeText(v.getContext(),"you clicked image" + fruit.getName(),Toast.LENGTH_SHORT).show();
    46             }
    47         });
    48         return holder;
    49     }
    50     //onBindViewHolder()方法是用于对RecyclerView子项的数据进行赋值的,会在每个子项被滚动到屏幕内的时候执行,
    51     // 这里通过position参数的到当前项的Friut实例,然后再将数据设置到ViewHolder的ImageView和TextView中
    52     @Override
    53     public void onBindViewHolder(ViewHolder holder, int position) {
    54         Fruit fruit = mFruitList.get(position);
    55         holder.fruitImage.setImageResource(fruit.getImageId());
    56         holder.fruitName.setText(fruit.getName());
    57     }
    58     //getItemCount()方法用于告诉RecyclerView一共有多少子项,直接返回数据源的长度
    59     @Override
    60     public int getItemCount() {
    61        return mFruitList.size();
    62     }
    63 }
  • 相关阅读:
    js 判断是否包含
    react-navigation-easy-helper
    mobx 小结
    react native使用 mobx , can't find variable:Symbol
    react-native 极光推送(jpush-react-native)
    react-native 启动页(react-native-splash-screen)
    react-native Android 全面屏手机 底部留有一大块黑屏
    RAP + MOCK
    ES7新特性
    POP动画[2]
  • 原文地址:https://www.cnblogs.com/znjy/p/14906010.html
Copyright © 2011-2022 走看看