当前位置: 首页 > news >正文

企业门户网站平台建设招标采购文件wordpress 4.2.1

企业门户网站平台建设招标采购文件,wordpress 4.2.1,网上帮做一些小事赚零花钱的网站,手机端网站建设郑州很惭愧, 做了多年的Android开发还没有使用过DiffUtil这样解放双手的工具。 文章目录 1 DiffUtil 用来解决什么问题?2 DiffUtil 是什么?3 DiffUtil的使用4 参考文章 1 DiffUtil 用来解决什么问题? 先举几个实际开发中的例子帮助我们感受下: 加载内容流时,第一次加载了ABC,…很惭愧, 做了多年的Android开发还没有使用过DiffUtil这样解放双手的工具。 文章目录 1 DiffUtil 用来解决什么问题?2 DiffUtil 是什么?3 DiffUtil的使用4 参考文章 1 DiffUtil 用来解决什么问题? 先举几个实际开发中的例子帮助我们感受下: 加载内容流时,第一次加载了ABC,第二次加载了BCD如何让用户能看到不重复的内容?网络数据和本地数据不一致, 如何能够找出不一致的内容? 我们可以采用最笨的方法, 自己比较两个集合的差异但是效率较低每个开发者都要重复做这样的事情, 是谷歌不愿意看到的。 2 DiffUtil 是什么? DiffUtil is a utility class that calculates the difference between two lists and outputs a list of update operations that converts the first list into the second one. It can be used to calculate updates for a RecyclerView Adapter. See ListAdapter and AsyncListDiffer which can simplify the use of DiffUtil on a background thread. DiffUtil uses Eugene W. Myers’s difference algorithm to calculate the minimal number of updates to convert one list into another. Myers’s algorithm does not handle items that are moved so DiffUtil runs a second pass on the result to detect items that were moved. DiffUtil 是一个实用程序类它计算两个列表之间的差异并输出将第一个列表转换为第二个列表的更新操作列表。 它可用于计算 RecyclerView 适配器的更新。请参阅 ListAdapter 和 AsyncListDiffer它们可以简化后台线程上 DiffUtil 的使用。 DiffUtil 使用 Eugene W. Myers 的差分算法来计算将一个列表转换为另一列表所需的最小更新次数。 Myers 的算法不处理已移动的项目因此 DiffUtil 对结果运行第二遍以检测已移动的项目。 3 DiffUtil的使用 item_song_info.xml ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:orientationhorizontalandroid:padding16dp!-- Title TextView --TextViewandroid:idid/tv_titleandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textTitleandroid:textSize20spandroid:textStylebold /!-- Spacer View to add space between title and subtitle --Viewandroid:layout_width8dpandroid:layout_heightmatch_parent /!-- Subtitle TextView --TextViewandroid:idid/tv_sub_titleandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textSubtitleandroid:textSize16sp / /LinearLayoutactivity_main.xml ?xml version1.0 encodingutf-8? androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityandroidx.recyclerview.widget.RecyclerViewandroid:idid/recyclerViewandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparent //androidx.constraintlayout.widget.ConstraintLayoutMusicBean.kt data class MusicBean(var type: Int, var title: String, val subTitle: String)MainActivity.kt class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val recyclerView: RecyclerView findViewById(R.id.recyclerView)recyclerView.layoutManager LinearLayoutManager(this)val adapter MyAdapter()recyclerView.adapter adapteradapter.data getSampleDataA()Handler(Looper.getMainLooper()).postDelayed({adapter.data getSampleDataB()}, 2000)}// 用于生成初始数据private fun getSampleDataA(): ListMusicBean {val data mutableListOfMusicBean()for (i in 1..10) {MusicBean(type i, title ItemA $i, subTitle subTitle $i).let {data.add(it)}}return data}// 用于生成变化后的数据private fun getSampleDataB(): ListMusicBean {val data mutableListOfMusicBean()for (i in 1..10) {val tag if (i 5) {B} else AMusicBean(type i, title Item$tag $i, subTitle subTitle $i).let {data.add(it)}}return data}class MyAdapter : RecyclerView.AdapterMyAdapter.MyViewHolder() {var data: ListMusicBean emptyList()set(value) {// 如果比较的集合较多(比如超过1000个), 建议使用子线程去比较val diffResult DiffUtil.calculateDiff(MyDiffCallback(field, value))// 旧值赋新值field value// 这里一定要保证在主线程调用diffResult.dispatchUpdatesTo(this)}class MyDiffCallback(private val oldList: ListMusicBean, private val newList: ListMusicBean) : DiffUtil.Callback() {override fun getOldListSize(): Int oldList.sizeoverride fun getNewListSize(): Int newList.sizeoverride fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {// 把这里想成是比较holder的类型, 比如纯文本的holder和纯图片的holder的type肯定不同return oldList[oldItemPosition].type newList[newItemPosition].type}override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {// 把这里想成是同一种holder的比较,比如都是纯文本holder,但是title不一致return oldList[oldItemPosition].title newList[newItemPosition].title}}override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {val view LayoutInflater.from(parent.context).inflate(R.layout.item_song_info, parent, false)return MyViewHolder(view)}override fun onBindViewHolder(holder: MyViewHolder, position: Int) {val item data[position]holder.bind(item)}override fun getItemCount(): Int {return data.size}class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {fun bind(item: MusicBean) {val tvTitle: TextView itemView.findViewById(R.id.tv_title)val tvSubTitle: TextView itemView.findViewById(R.id.tv_sub_title)tvTitle.text item.titletvSubTitle.text item.subTitle}}} }4 参考文章 DiffUtil 官方介绍 将 DiffUtil 和数据绑定与 RecyclerView 结合使用 DiffUtil和它的差量算法 DiffUtils 遇到 Kotlin榨干视图局部刷新的最后一滴性能
http://wiki.neutronadmin.com/news/244433/

相关文章:

  • 网站建设开发计入什么会计科目app软件公司
  • 网站编程用什么语言网站页面不更新
  • 住房和城乡建设网站注册服务公司流程和费用
  • 建设企业网站内容wordpress题库制作
  • 精品网站建设费用 要上磐石网络肥城网站建设推广
  • 免费空间 上传网站专业网站设计第三方
  • 建筑行业官方网站可以做公司宣传的网站有哪些内容
  • 网站怎么做h5支付宝支付接口简历生成网站
  • 电子商务设计网站建设长链接在线转化短链接
  • 门户网站建设不断多用户商城思维导图
  • 东明县住房和城乡建设局网站广告网名
  • 淄博网站制作优化海南营业执照网上怎么申请
  • 润滑油手机网站模板网站建设费归入长期待摊费用
  • 成都成华区网站建设如何判断网站有cdn加速
  • 网站没有备案会怎么样专业微信网站建设价格
  • 电脑培训学校学费多少长沙正规关键词优化价格从优
  • 网站后台管理员密码淮北论坛人才招聘网
  • 响应式网站建站工具江门网站建设 卓华
  • 网站建设方案云盘app开发商业计划书模板
  • 东莞设计网站建设html标签属性
  • 美工做任务网站怎么查网站的空间商
  • 在哪学习建网站wordpress设置下载链接
  • 网站不备案违法吗网站建设加优化
  • 仁寿建设局网站网站优化解决方案
  • 河南旅游网站建设建网站和开发软件哪个难
  • 网站建设认知与理解VPS如何做镜像网站
  • php网站设计要学多久做网站阜阳
  • 深圳免费网站制作哪个好网站空间虚拟主机续费
  • 建筑业招聘网站永久免费进销存管理软件手机版
  • 做电子商务网站建设工资多少公司网站上传文章