个人第二个项目总结:recyclerView

我们都知道listView可以实现纵向列表,可是它的拓展性并不好,而且无法实现横向列表。这里,我们学习一种新的View,它就是recyclerView。

先看一下效果图吧

它可以实现上下拖动以显示屏幕外的数据

因为android的recyclerView是新增的,所以它被封装到v7库中,要使用的话就必须导入对应的库,而这个库本身android已经提供,我们只需在android-Gradle Scripts-build.gradle(Module:app)-dependencies中添加

com.android.support:recyclerview-v7:26.1.0即可。

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:recyclerview-v7:26.1.0'
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.1.+'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    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'
}

 
 
然后,在你需要显示的界面的xml中加入recyclerView。如图:

这里要注意的是,包名必须完整,否则无效。然后就是配置数据源,因为我的项目的业务需求是每个子项都有一个图片加一个textView组成。所以,我这里用到的是自定义的适配器。如何实现呢?首先,自定义一个子项的布局,命名为item

然后创建一个实例类,重写它的构造方法

最后构建适配器,将子布局加载到适配器,代码一看便知

最后,我们要做的就是将适配器放入recyclerView中

到了这一步我们的列表项就做完了。如果要改为横向布局,只需将第三行改为第四行即可。我们都知道,界面是与用户交互的,所以仅仅只能显示是不够的,我们还应该添加点击事件。与listview不同的是,recyclerView的点击事件是在适配器里添加的

 holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int position=holder.getAdapterPosition();
                ITEM item=mITEM.get(position);
                switch (position)
case ://业务逻辑
break;
}
}

点击了某个子项,只要点击的位置在这个控件之内,都可以触发点击事件。

然后这里我们就得注意一个细节了,为了让用户知道他到底点击的是哪个选项,我们应该给点击事件添加特殊的响应机制。比如可以点击后文字变粗,颜色变红等等,但是这个有缺陷,比如第一次你点击了第一项,第二次你点击了第二项,那么第一项就需要还原,一旦你的子项特别多,处理起来就特别繁琐。所以我们就需要用到动画效果来实现。

这里,我们需要制作一个动画的配置文件,android默认的动画配置文件放在anim中,所以,在res文件夹下新建一个文件夹,命名为anim,然后根据我们的业务需求构建配置文件,命名为my_animation,我这里是文字从小变大的效果

,然后在项目中放置动画

final Animation animation= AnimationUtils.loadAnimation(view.getContext(),R.anim.my_animation);             //点击后动画
需要使用的时候,调用startAnimation(animation)即可


最后,说一说关于recyclerView的一点细节,因为我们这里所处的位置是java类文件,在点击事件中,toast应该
Toast.makeText(view.getContext(),"本功能暂未开通",Toast.LENGTH_SHORT).show();
关于每个子项的边框如何实现呢?这个也需要自己来定义,在drawable目录下,创建一个xml,命名为view_border,
然后根据自己的需求设置

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#ff0000ff"/>
    <stroke android:width="1dp" android:color="#000000" />
    <gradient
        android:startColor="#FFFFFF"
        android:endColor="#FFFFFF"/>
    <padding android:left="7dp"
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="10dp" />
</shape>

最后,在子布局中将设置设为布局方式好了,关于recyclerView就暂时提到这里了,下期我们讲讲如何实现横向滑动切换屏幕

猜你喜欢

转载自blog.csdn.net/qq_37820491/article/details/80921377