在实际运用中,无论是List还是Grid效果,基本都会伴随着一些点击操作,那么本期就来一起学习RecyclerView的点击事件。 ?...在介绍RecyclerView开篇的时候简单提到过,要实现一些控制点击、长压事件需要自己完成,不像之前学的ListView有自带ClickListener和LongClickListener,但其实更加灵活多样...,可以对点击方式按照自己的方式来实现。...首先在RecyclerViewAdapter类中分别定义2个接口OnItemClickListener和OnItemLongClickListener,然后提供2个公开方法便于Activity设置事件监听...import android.widget.Toast; import com.jinyu.cqkxzsxy.android.advancedviewsample.adapter.RecyclerViewAdapter
大家还记得之前在第38期~第50期都在学习列表控件吗,其中用了8期讲ListView的使用,相信都已经掌握好了吧。...另外ListView的可扩展性相对来说比较弱,以前要实现每个列表项的高度不同的界面,或者要完成瀑布流效果,需要非常复杂的自定义处理。...在使用RecyclerView之前,需要自定义一个继承自RecyclerView.Adapter的适配器,将数据与每一个item的界面进行绑定。...ListView效果,使用自定义的RecyclerViewAdapter决定RecyclerView所要显示的内容,并设置显示的界面样式。...简单修改一下自定义的RecyclerViewAdapter类中onBindViewHolder方法,使其产生一个随机的高度,代码如下: // 将数据与界面进行绑定的操作 @Override
背景 最近的一个项目:需要使用 Android App 作为 Socket 的服务端,并且一个端口能够同时监听 TCP/Web Socket 协议。 自然而然,项目决定采用 Netty 框架。...Netty 服务端在收到客户端发来的消息后,能够做出相应的业务处理。在某些场景下,服务端也需要给客户端 App/网页发送消息。 二....Demo 的实现 3.1 Socket 服务端 启动 NettyServer: private fun startServer() { if (!...总结 借助 Kotlin 的特性以及 Netty 框架,我们在 Android 上也实现了一个 Socket 服务端。...参考资料: https://github.com/aLittleGreens/NettyDemo Netty 实现 一个端口同时接收 socket 和 webSocket 连接
在写 MyItemTouchHelperCallback 之前我们先创建一个 IItemTouchHelperAdapter 接口,让 RecyclerViewAdapter 实现这个接口。...用于 RecyclerViewAdapter 回调。...RecyclerViewAdapter 中实现刚刚继承的两个方法: @Override public void onItemMove(int fromPosition, int toPosition...isLongPressDragEnabled() @Override public boolean isLongPressDragEnabled() { //禁止长按item可以上下拖拽,因为我们要自定义开启拖拽的时机...RecyclerViewAdapter 的构造方法中传入 OnStartDragListener 的实例(即实现了该接口的Activity),给 item 左侧的按钮添加 事件监听 public class
继续使用上期的案例,首先在RecyclerViewAdapter类中新增一个插入和删除处理的公开方法,RecyclerViewAdapter类修改后的代码如下: package com.jinyu.cqkxzsxy.android.advancedviewsample.adapter...position) { mDatas.remove(position); notifyItemRemoved(position); } // 点击事件接口...interface OnItemClickListener { void onClick(View parent, int position); } // 长按事件接口...; contenTv = (TextView) itemView.findViewById(R.id.content_tv); } } } 然后在Activity...import com.jinyu.cqkxzsxy.android.advancedviewsample.adapter.RecyclerViewAdapter; import com.jinyu.cqkxzsxy.android.advancedviewsample.view.RecyclerViewItemDivider
在实际开发中,经常都会遇到下拉刷新、上拉加载更多的情形,这一期就一起来学习Android系统的SwipeRefreshLayout下拉刷新组件。...一、SwipeRefreshLayout简介 SwipeRefrshLayout是Google官方更新的一个控件,可以实现下拉刷新的效果,该控件集成自ViewGroup在support-v4兼容包下...然后在代码里设置OnRefreshListener设置监听,最后在监听里设置刷新时的数据获取就可以了。...RecyclerViewAdapter的关键代码,如下所示: package com.jinyu.cqkxzsxy.android.advancedviewsample.adapter; import...public class RecyclerViewAdapter extends RecyclerView.Adapter { private
/ interface B{ fun x(): Int = 1 } interface C{ fun x(): Int = 0 } /**一个类实现了两个接口,两个接口中的方法相同,这个类在覆写的时候就会出现冲突...都可以运行在 JVM 上面,我们用一个接口 JVMRunnable 来标识它们的这一身份;现在我们假设这二者对于 JVMRunnable 接口的实现都是一样的,所以我们将会在 Java 和 Kotlin...Kotlin 与 Java 在能够运行在 JVM 这个问题上是一致的,可 Java 却不能像 Kotlin 那样去运行在前端,Kotlin 和 Java 运行在 JVM 上这个点只能算作一种能力,而不能对其本质定性...于是我们在 Java 8 当中看到了接口默认实现的 Feature,于是我们的代码可以改改了: public interface JVMRunnable{ default void runOnJVM...以上这篇解决Kotlin 类在实现多个接口,覆写多个接口中相同方法冲突的问题就是小编分享给大家的全部内容了,希望能给大家一个参考。
在之前学习ListView的时候,有学习过如何给ListView添加列表头和列表尾。.../> 然后修改RecyclerViewAdapter文件,在getItemViewType方法里面判断了当前Item的类型,然后在onCreateViewHolder...跟据item的类型分别加载不同的布局以实现HeaderView和FooterView。...修改后的RecyclerViewAdapter代码如下: package com.jinyu.cqkxzsxy.android.advancedviewsample.adapter; import...当然这里只是简单介绍了其中一种实现方式,更多实现方式后期逐渐学习,欢迎一起交流讨论。
适配器设置 在使用的时候更新需要使用 Adapter适配器。...继承该类时必须传入一个itemView,表示这个item显示的View,我这里自定义的适配器命名为MyViewHolder。...在Adapter中必须实现的三个方法: a、//列表页需要知道有多少个条目publicintgetItemCount() b、//创建一个ViewHolder,我们可以根据viewType的不同而创建不同的...,所有能实现瀑布流样式。...特别方便拓展,自定义各种各样的差异化,而从这其中解耦出来 缺点:需要自己实现 OnItemClickListener点击事件(这么实用的需求,Google竟然让我们自己实现...
,这样就能够实现多种item显示了,我们先来看一下,一共要实现多少方法,他们分别是什么,我都加了注释。...步骤: 1:item的布局文件(xml) 2:item的bean类(第二个方法写一个) 3:自定义ViewHolder类继承RecyclerView.ViewHolder 4:自定义adapter继承...viewholder有了,数据的判断类型有了,就差展示了,所以重写onBindViewHolder方法 /** * 方法作用:绑定数据, * 方法描述:根据holder对控件进行赋值,同时如果有回调接口...,在该方法中写。...recyclerViewAdapter = new RecyclerViewAdapter2(this, list); recyclerView.setAdapter(recyclerViewAdapter
很多时候,我们在自定义控件类中也需要实现一些属性变化的监听器,实现跟原生控件监听器一样的功能。...以下分几个步骤说明自定义监听器实现和使用(以自定义类MyClass加载完成监听器为例): 一、自定义监听器的实现: 1、 定义一个加载完成监听接口 //加载监听接口 public static interface...在MyClass加载完成的时候则调用监听接口的方法 mLoadingListener.onFinishedLoading(true); 二、自定义监听器的使用: 1、给MyClass的实例实现监听接口中方法...补充知识:android Activity 给 Fragment 设置回调的方法 这个实现方法很简单,可分为3步走: 1.在fragment中定义接口 2.在activity的定义时实现这个接口 3....在自定义类中实现自定义监听器方式就是小编分享给大家的全部内容了,希望能给大家一个参考。
直到前几天才无意中发现,原来v7包中提供了一个DividerItemDecoration类,利用它,我们可以很简单地实现RecyclerView的分割线!那还等什么呢?赶紧用起来。...(this,titles)); } } RecyclerViewAdapter的代码: / ** * RecyclerView适配器 */ public class RecyclerViewAdapter...4、自定义分割线 有时候默认的浅灰色的分割线并不能满足我们的要求,这时我们就需要自己“写”一条分割线了,那应该怎么写呢?...<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" <gradient...android:centerColor="#ff00ff00" //绿色 android:endColor="#ff0000ff" //蓝色 android:startColor
《Kotlin for Android Developers》书的作者 Kotlin 1.1 的发布真是激动人心啊!...比如你有个 RecyclerViewadapter 类会接收一个事件监听。...这里有几个例子: 第一个是你很可能希望看到的 Jetbrains 官方提供的库: kotlinx-coroutines-android ,这个库实现了协程在安卓中的使用。...另外一个,将会有一个新的潮流就是使用 @JvmOverloads 来实现自定义视图组件的构造函数,这从文字意义上来说就是可以用一句话来实现自定义视图的构造函数(不过确实是很长的一句话),通过一个构造函数和默认的参数值...另外,如果你想学习使用 Kotlin 来开发安卓程序,那么你会对《[Kotlin for Android Developers]》(https://antonioleiva.com/kotlin-android-developers-book
现在来介绍两种控件RecyclerView和CardView,并通过实例将它们结合在一起实现一种横向卡片式滑动效果. 1.RecyclerView RecyvlerView是android SDK 新增加的一种控件...2.CardView CardView是安卓5.0推出的一种卡片式控件,内部封装了许多有用的方法来实现美观效果。...3.如何使用RecylerView和CardView在android studio中 在build.gradle中添加依赖再编辑即可 compile 'com.android.support:recyclerview-v7...:25.+' compile 'com.android.support:cardview-v7:25 4.通过实例,使用两种控件实现横向卡片式滑动效果 建立main.xml布局文件,代码如下: <?...中来实现RecyclerView 跟ListView的一样,我们需要写一个适配器,代码如下: public class recyclerViewadapter extends RecyclerView.Adapter
kotlin结合Room在实际项目中的运用 架构还是MVVM,DataBinding+ViewModel+LiveData的组合 效果: 1.首先添加Room依赖 添加kapt插件: plugins...{ id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' } def room_version...return userInfoDao .getUserInfoList() .flowOn(Dispatchers.IO) } } 4.定义RecyclerViewAdapter...import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import...lifecycleScope.launchWhenCreated { //每当UserInfo表发生变化,Flow都会把UserInfo列表发射出去,那么我们 //在collect
在平时开发应用的时候,经常会遇到列表排序、滑动删除的需求。...如果列表效果采用的是 ListView 的话,需要经过自定义 View 才能实现效果;但是如果采用的是 RecyclerView 的话,系统 API 就已经为我们提供了相应的功能。...(adapter)); helper.attachToRecyclerView(recyclerView); 在创建 ItemTouchHelper 对象时候,需要我们传入一个实现了 ItemTouchHelper.Callback...接口的对象。...实现 ItemTouchHelper.Callback 接口 创建 MyItemTouchCallback 类,实现 ItemTouchHelper.Callback 接口: public class
Android/iOS业务SDK层:主要是包括一些现有的Android/iOS SDK,需要直接依赖现有SDK来开发KMM时,在commonMain expect声明接口,在androidMain、iosMain...class ALogImpl(): IALog 在androidMain实现ALogImpl import android.util.Log actual class ALogImpl actual...message: String) ... } 在iosMain中用actual修饰来实现真正的接口 actual interface IALog { actual fun v(tag:...String, message: String) ... } 在androidMain中用actual修饰来实现真正的接口,带actual修饰的方法为Android/iOS公共方法,不带actual...好处是通常一些SDK在commonMain中会定义一套公共接口,有时候Android或iOS有一些独有接口,就可以用这种方式声明。同理data class也是可以这样使用。
this.name = name; this.age = age; } @Ignore public User() { } } 定义Dao接口来对刚刚的...User表进行操作,对接口使用@Dao注解 @Query、@Insert、@Delete、@Update注解,分别表示:查询、新增、删除、更新 增删改操作内部会自动使用主键进行操作 package...void deleteAllUser(); //更新一条数据 @Update void updateUser(User user); } 首先定义Repository层,里面实现对数据库的操作...package com.aruba.room; import android.content.Context; import android.os.AsyncTask; import android.view.View...recyclerViewAdapter = new RecyclerViewAdapter(); activityMainBinding.recyclerview.setAdapter(
在Android短视频源码开发过程中,如果对本地默认的输入法不满意,其实可以实现切换自定义输入法,通过这样的方式提升用户的体验,其实具体实现的方法很简单,用好InputMethodManager即可。...android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import...android.widget.Button; import android.widget.EditText; import android.widget.TextView; import java.util.List...findViewById(R.id.editText); button = (Button)findViewById(R.id.button); } } 这其中按钮点击的那四行代码是关键,实现了显示...以上就是“在Android短视频源码开发中切换自定义输入法的实现”的全部内容,希望对大家有帮助。
code generator自动生成Parcelable序列化 Android Parcelable code generator(for kotlin)使用kotlin开发时自动生成Parcelable...快捷键: Ctrl + Alt + S 用法: 1.在一个 Activity, Fragment, RecyclerViewAdapter(包含直接或间接子类)甚至一个一般的类文件中,如果对应代码中已存在布局文件名...生成接口以及实现类,解放双手。...Android布局XML文件属性顺序,并且会将默认属性调整到前面,并在行的末尾使用自定义属性。...Android Parcelable code generator使用 2.Android Parcelable code generator(for kotlin) 使用kotlin开发时自动生成
领取专属 10元无门槛券
手把手带您无忧上云