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

网站试运营网站建设概念

网站试运营,网站建设概念,wordpress拨号,创新创意产品设计方案很惭愧, 做了多年的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/207994/

相关文章:

  • 营销型网站用什么系统全国工商企业信息查询系统
  • 网络推广方法有哪几种seo优化是利用规则提高排名
  • 徐州网站排名优化唐山企业网站模板建站
  • 自己做网站销售广州住建部官网
  • 武进网站建设哪家好wordpress后台排版错乱
  • 建立网站需要多少钱稻挺湖南岚鸿有名电商外贸是做什么的
  • 网站开发与维护就业前景放心营销网站开发
  • 宁波南部商务区网站建设无锡市无锡市住房和城乡建设局网站
  • 怎样让百度收录网站北京网站设计公司cg成都柚米科技15
  • 便利的微网站建设外贸最热门的十大产品
  • 国外做宠物用品的网站安溪网站开发
  • intitle 郑州网站建设友情链接交换的作用在于
  • 做图表的网站网站建设 客户拜访
  • 如何建立论坛网站甘肃企业建站系统费用
  • 大连鼎信网站建设公司地址网站运营工作具体做啥
  • 大连本站运营公司北京市工程建设交易中心
  • 建设银行网站安全性分析网站建设和微站建设的区别
  • 网站解析是什么意思免费加盟一件代发货源网站
  • 做苗木网站网站建站网站建设
  • 云南网站建设500前端用户中心 wordpress
  • 诸城哪有做公司网站和的数据库修改wordpress登录密码忘记
  • 网站建设新闻+常识网站建设栏目分级
  • 一个网站是怎么做出来的做网店去哪个网站货源好
  • 网站内容避免被采集网站做零售
  • 怎么自己做微网站吗如何写手机适配网站
  • 湖南建设工程竣工备案表查询网站企业网站设计与管理系统
  • 电商型网站网站建设合同 附件
  • 主机如何做网站空间常德seo公司
  • 高端旅游网站建设wordpress 快讯模板
  • 微信小程序外联网站网络平台推广方法