ViewItem的布局,图片与文字上下排列 Activity的布局 <?..." android:textSize = "18sp"/> <androidx.recyclerview.widget.RecyclerView android:..." android:layout_gravity="center_horizontal"/> 主Acitivity Kotlin 代码: package...> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.recyclerview2
视图持有者的设计理念固然美好,却苦了Android开发者,每次由BaseAdapter派生新的适配器类,都必须手工处理视图持有者的相关逻辑,实在是个沉重的负担。...为方便理解循环适配器的Kotlin编码,下面以微信的公众号消息列表为例,给出对应的消息列表Kotlin代码: //ViewHolder在构造时初始化布局中的控件对象 class RecyclerLinearAdapter...根据这种设计思路,提取出了循环视图基础适配器,它的Kotlin代码如下所示: //循环视图基础适配器 abstract class RecyclerBaseAdapter<VH : RecyclerView.ViewHolder...,其中第一行代码表示引用了Kotlin的扩展插件LayoutContainer,第二行代码与Activity的一样表示导入了指定布局文件里面所有控件对象: import kotlinx.android.extensions.LayoutContainer...import kotlinx.android.synthetic.main.item_recycler_staggered.* 另外,因为LayoutContainer是Kotlin针对性提供给Android
低功耗蓝牙开发(扫描、连接、数据交互)Kotlin版 前言 正文 一、配置项目 二、页面设计 三、扫描设备 ① 绑定视图 ② 检查Android版本 ③ 打开蓝牙 ④ 请求权限 ⑤ 扫描结果 ⑥ 设备适配器编写...⑦ 数据渲染 ⑧ 开始和停止扫描 四、连接和数据交互 ① 绑定视图 ② 初始化连接 ③ Ble回调 ④ 帮助类 ⑤ UI回调 五、源码 前言 写这篇文章是因为有读者想看看Kotlin中怎么操作低功耗蓝牙...,再加上我也想写一些关于Kotlin的内容,对于低功耗蓝牙的Java版的,我写了两篇,一个是扫描、连接,另一篇就是数据交互,而这篇Kotlin文章我会减少讲解的环节,更多的注重业务逻辑和UI以及Kotlin...:indeterminate="true" android:visibility="invisible" /> vector> 下面写扫描到的列表适配器布局文件,在layout下新建一个item_bluetooth.xml
:material:1.2.0' //RecyclerView最好的适配器,让你的适配器一目了然,告别代码冗余 implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper...--蓝牙连接权限--> <!...上面不涉及到代码,所以Java和Kotlin中的资源文件配置是差不多的。 ② 布局和样式 图片资源 ? ? ? ? ? ?...--设备展示列表--> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv" android...而Kotlin的语法可以让你把构造方法的参数作为类参数使用,这样解释不知道是不是对的,这里传了一个布局id和数据源。
:material:1.2.0' //RecyclerView最好的适配器,让你的适配器一目了然,告别代码冗余 implementation 'com.github.CymChad:...--蓝牙连接权限--> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv" android...,这里传了一个布局id和数据源。...) { e.printStackTrace() } catch (e: IllegalAccessException) { e.printStackTrace
ItemBinding 类 , 将数据绑定在该布局类中即可 ; 3、自定义 RecyclerView.Adapter 适配器要点 ( 本博客重点 ★ ) 在 自定义 RecyclerView.Adapter...适配器 中 , 需要 实现对 RecyclerView 条目 DataBinding 布局 的 数据绑定 ; 首先 , 自定义 RecyclerView.ViewHolder 类 , 在其中维护 item.xml...: plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt...(this, R.layout.activity_main) // 设置 RecyclerView 的 布局管理器 / 数据适配器 activityMainBinding.recyclerView.layoutManager...= adapter } } 3、自定义 RecyclerView.Adapter DataBinding 布局 是 RecyclerView 中条目的布局 , 需要 在 自定义 RecyclerView.Adapter
Exception) { //请求失败 MainState.Error(e.localizedMessage ?...① 列表适配器 在创建适配器之前首先我们需要创建一个适配器所对应的item布局,在layout下新建一个item_wallpaper_rv.xml,代码如下图所示: <?...import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide...=".ui.MainActivity"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_wallpaper...initView()函数中是控件的一些配置,比如给RecyclerView添加布局管理器和设置适配器,给按钮添加点击事件,在点击的时候发送意图,发送的意图被MainViewModel中mainIntentChannel
> <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"...电影列表的整体布局的 UI 如下图所示 ?...电影列表的整体布局的 UI 视图数据适配器 ViewAdapter 我们在创建 MovieListActivity 过程中需要展示响应的数据,这些数据由 ViewAdapter 来承载,对应的代码如下...其中的电影海报是图片,所以我们的布局文件中使用了 ImageView,对应的布局文件是 movie_list_content.xml ,代码如下 <?...我们可以像在 Java 中一样方便的使用 Android 开发的流行的库诸如 Butter Knife、Realm、RecyclerView等。
因为RecyclerView没有点击、长按事件,需要自己写 实现的方式比较多,可以通过adapter中自己去提供回调 废话不多说,直接看代码: public class GalleryAdapter...extends RecyclerView.Adapter { /** *定义回调接口 */ public interface OnItemClickLitener...private List mDatas;//适配器绑定的数据 /** * 构造函数 */ public GalleryAdapter(Context context,...*/ public static class ViewHolder extends RecyclerView.ViewHolder { public ViewHolder(View arg0...也在这里面 */ @Override public void onBindViewHolder(final ViewHolder viewHolder, final int i) { // 布局填充数据
Socket通讯 前言 正文 一、创建项目 二、构建主页面布局 三、服务端 四、客户端 五、业务交互 ① 接口回调 ② 服务端和客户端切换 ③ 服务开启和关闭 ④ 服务连接和断开 ⑤ 发送消息 ⑥ 显示消息内容...一、创建项目 创建一个名为SocketDemo的项目,使用Kotlin。 因为涉及到网络通讯,所以需要在AndroidManifest.xml配置网络权限。...然后就是根据isServer去设置服务端布局和客户端布局的显示状态,同时还需要设置底部输入框的提示文字。...isSend) { showMsg("当前未开启服务或连接服务");return@setOnClickListener }...① 列表适配器 做适配器的话要考虑服务端和客户端的关系,因此和传统的聊天是有区别的。
build.gradle中 dependencies 添加下方依赖 implementation 'androidx.recyclerview:recyclerview:1.1.0' 布局 main...的布局对象 RecyclerView recyclerView = findViewById(R.id.rv); // 需要自定义布局才可以使用 如:LinearLayoutManager...MyAdapter myAdapter = new MyAdapter(data, this); // 布局对象绑定适配器,以便于渲染视图了 recyclerView.setAdapter...@Override public void onRecyClerItemClick(int positon) { Log.e(...import androidx.recyclerview.widget.RecyclerView; import java.util.List; // 自定义适配器需要继承RecyclerView.Adapter
的使用 在使用RecyclerView时候,必须指定一个适配器Adapter和一个布局管理器LayoutManager。...简而言之,Adapter就是数据与ui之间的桥梁,它把数据与前端ui连接到一起,是一个展示数据的载体。...="never" android:scrollbars="none" /> 将微信fragment的布局改为recycleView布局 现在需要将 RecyclerView 添加到上次的微信...微件之后,需要获取对象句柄,将其连接到布局管理器,并为要显示的数据附加适配器 创建适配器实现步骤如下: ① 创建Adapter:创建一个继承RecyclerView.Adapter的Adapter类...(linearLayoutManager); 2.使用RecycleView时适配器要继承 RecyclerView.Adapter,adapter中必须实现
:design:25.3.1' 三、项目实现,布局文件 1、demo中一共用到两个activity 对应两个布局文件 先看扫描设备界面 包含: 1、一个列表,...显示 所有扫描到的设备的MAC地址,点击状态在 ''已选择' or '‘未选择’ 之间改变,表明当前设备有没有加入到需要连接的设备集合中 2、扫描按钮 3、结束扫描按钮 4...包含: 1、选择需要连接的传感器设备 按钮 2、开始连接 按钮 3、数据展示 ? 布局文件代码: <?...convert(BaseViewHolder helper, String item) { helper.setText(R.id.txtMac,item); } } 适配器布局代码...<TextView android:id="@+id/txtState" android:text="未选择" android:layout_width=
Socket通讯 前言 正文 一、创建项目 二、构建主页面布局 三、服务端 四、客户端 五、业务交互 ① 接口回调 ② 服务端和客户端切换 ③ 服务开启和关闭 ④ 服务连接和断开 ⑤ 发送消息 ⑥ 显示消息内容...一、创建项目 创建一个名为SocketDemo的项目,使用Kotlin。 因为涉及到网络通讯,所以需要在AndroidManifest.xml配置网络权限。...然后就是根据isServer去设置服务端布局和客户端布局的显示状态,同时还需要设置底部输入框的提示文字。...isSend) { showMsg("当前未开启服务或连接服务");return@setOnClickListener }...首先要改变一下UI,先把activity_main.xml中id为tv_info的控件控件删掉,换成RecyclerView,代码如下: <androidx.recyclerview.widget.RecyclerView
中如果要对ViewBinding进行封装的话同时利用上Kotlin的一些特性的话,可以这样做,原文地址如下:Viewbinding使用和委托封装,感觉写得蛮好的,太久没用Kotlin了,还是看了一会才看懂..." android:text="蓝牙适配器已关闭,单击下面的按钮以启用它。"...--设备列表--> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_device"...= null//gatt ) 扫描的结果我们可以用列表来展示,选择使用RecyclerView,那么相应的会使用到适配器。...① 列表适配器 首先创建适配器的布局,在layout下新建一个item_device_rv.xml,代码如下所示: <?xml version="1.0" encoding="utf-8"?
在用DataBinding时要注意DataBinding访问的是静态方法 在Kotlin中就要用companion object和@JvmStatic class ImageViewBindingAdapter...Exception){ e.printStackTrace() return LoadResult.Error(e) } }...recycleView.adapter = movieAdapter.withLoadStateFooter(MovieLoadMoreAdapter(this@MainActivity)) 只需要加个适配器就可以..." android\:layout\_width="match\_parent" android\:layout\_height="match\_parent"> <androidx.recyclerview.widget.RecyclerView...android:id="@+id/recycleView" android:layout_width="match_parent" android
下面看看强悍的RecyclerView都提供了哪些常用方法: setAdapter : 设置列表项的适配器。有关适配器的详细说明见下一标题。...循环适配器 RecyclerView有专门的适配器类,即RecyclerView.Adapter。...在调用RecyclerView的setAdapter方法前,我们要先实现一个从RecyclerView.Adapter派生而来的数据适配器,用来定义列表项的布局与具体操作。...总的来说,RecyclerView.Adapter与我们之前经常遇到的BaseAdapter在处理流程上是基本一致的,当然它们之间也有不小的差异,下面是RecyclerView.Adapter和其他适配器的主要区别...: 1、自带ViewHolder及其重用功能,无需开发者手工重用ViewHolder; 2、未自带列表项的点击和长按功能,需要开发者自己实现点击和长按事件的监听; 3、增加区分不同列表项的视图类型
本文实例为大家分享了android实现RecyclerView列表单选功能的具体代码,供大家参考,具体内容如下 实现思维 1.首先在一行的xml布局中添加一个选中效果的icon图片,未选中的情况下INVISIBLE...或者GONE 都可以,推荐使用INVISIBLE它会占用布局位置但是不显示,这样可以避免布局中其他控件因为勾选布局的消失而轻微变动位置 2.将适配器类中的onCreateViewHolder方法重写添加按键监听...,onBindViewHolder方法中重写添加判断点击的位置(具体原理请查看下面贴的代码) PS: RecyclerView的实现全部方法就不贴出来了,本人的博客中有RecyclerView各种实现效果文章...1.首先在一行的xml布局中添加一个选中效果的icon图片,未选中的情况下INVISIBLE或者GONE 都可以,推荐使用INVISIBLE它会占用布局位置但是不显示,这样可以避免布局中其他控件因为勾选布局的消失而轻微变动位置...; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View
相信大部分的Kotlin开发者都在使用它进行Android开发,而且在之前的Android Studio创建Android项目时,都会自动帮你依赖: apply plugin: 'kotlin-android-extensions...kotlin-android-extensions三宗罪 内存问题 通过反编译kotlin-android-extensions的代码,你就会发现,通过kotlin-android-extensions...资源ID重名 由于kotlin-android-extensions是通过view的id名直接引用的,所以多个布局间的同名id,就需要手动对import进行重命名处理,而且经常会引用错误的布局文件,导致运行崩溃...虽然这里生成了大量的XXXBinding文件,但是对编译速度的影响和生成Apk大小的影响几乎可以忽略: 未使用的XXXBinding文件会在混淆时被删除 编译器生成Binding文件的速度极快,同时是增加更新...include来引入新的布局也是一个很常用的方式,kotlin-android-extensions由于底层使用的是运行时findViewById,所以不会存在什么问题,但是ViewBinding就不一样了
领取专属 10元无门槛券
手把手带您无忧上云