美文网首页
Android RecyclerView

Android RecyclerView

作者: YuQiao0303 | 来源:发表于2019-02-14 10:27 被阅读0次

    学习《第一行代码》第三章笔记
    项目地址:https://github.com/YuQiao0303/UIWidgetTest-LearnAndroid

    总体步骤

    1. 添加依赖
    2. 实体类
    3. 列表子项布局文件fruit_item.xml
    4. 适配器
    5. activity中:
    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(layoutManager);
    FruitAdapter adapter = new FruitAdapter(fruitList);
    recyclerView.setAdapter(adapter);
    
    1. 给具体的view注册监听事件

    添加依赖

    打开app/build.gradle文件, 在dependencies 闭包中添加如下内容:

    dependencies {
      compile fileTree(dir: 'libs', include: ['*.jar'])
      compile 'com.android.support:appcompat-v7:24.2.1'
      compile 'com.android.support:recyclerview-v7:24.2.1'
      testCompile 'junit:junit:4.12'
    } 
    

    添加完之后记得要点击一下Sync Now来进行同步。

    我个人加完是这样:

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:28.0.0'
        implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    
        implementation 'com.android.support:percent:28.0.0' //百分比库的依赖
        implementation 'com.android.support:recyclerview-v7:28.0.0' //RecyclerView 的依赖
    
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    }
    
    

    鼠标单击事件

    在ViewHolder 中添加了变量来保存子项最外层布局的实例,
    然后在onCreateViewHolder() 方法中注册点击事件就可以了。
    RecyclerView可以轻松实现子项中任意控件或布局的点击事件。
    我们在两个点击事件中先获取了用户点击的position, 然后通过position拿到相应的Fruit 实例, 再使用Toast分别弹出两种不同的内容以示区别。

    /**
         * 给ViewHolder的属性赋值(设置ViewHolder对应的布局文件:fruit_item.xml)
         * 注册鼠标单击事件
         * @param parent
         * @param viewType
         * @return
         */
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            //给ViewHolder的属性赋值
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.
                    fruit_item, parent, false);
            final ViewHolder holder = new ViewHolder(view);
            //整个列表子项的鼠标单击事件
            holder.fruitView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position = holder.getAdapterPosition();
                    Fruit fruit = mFruitList.get(position);
                    Toast.makeText(v.getContext(), "you clicked view " + fruit.getName(),
                            Toast.LENGTH_SHORT).show();
                }
            });
            //列表子项中imageView的鼠标单击事件
            holder.fruitImage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position = holder.getAdapterPosition();
                    Fruit fruit = mFruitList.get(position);
                    Toast.makeText(v.getContext(), "you clicked image " + fruit.getName(),
                            Toast.LENGTH_SHORT).show();
                }
            });
            return holder;
        }
    

    相关文章

      网友评论

          本文标题:Android RecyclerView

          本文链接:https://www.haomeiwen.com/subject/mtsdeqtx.html