ListView的BeginUpdate()和EndUpdate()作用

许多Windows 窗体控件(例如,ListView 和 TreeView 控件)实现了 BeginUpdate 和EndUpdate 方法,至于为何要这样用简单说明一下。

当我们向一个Listview控件中添加一组Item的时候,第一种方式就是把Item全部放到一个集合里,一次性加到listview中,另一种方式就是用循环的方法一次加一个Item进去。我们要说的就是这第二种方式。

如果没有使用BeginUpdate()和EndUpdate(),那么每添加一个Item,ListView都要重绘,那么当要添加的Items很多的时候,屏幕就会闪烁的现象。如果在添加Item之前使用BeginUpdate(),那么,ListView其实就不动了,等到所有的Item都添加完了,使用EndUpdate()一次重绘ListView,这样就不会发生屏幕闪烁的现象了。这也就是我们在插入数据项操作的前后要声明 BeginUpdate() 和 EndUpdate()的原因所在了。

 但是如果长时间连续不断的往Listview里加数据,BeginUpdate() 和 EndUpdate()只能缓解,却不是根本的解决办法,还是会有闪烁的情况发生。这时我们就要用到双缓冲了,可以尝试重写Listview.

class  DoubleBufferListView : ListView
{
public  DoubleBufferListView()
{
SetStyle(ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true );
UpdateStyles();
}
}

 这样就应该可以解决闪烁的问题了。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ListView和RecyclerView是Android开发中常用的控件,用于显示列表数据。两者的作用都是相似的,但是RecyclerView比ListView更加灵活和高效。 ListView是最常用的列表控件之一,它用于显示垂直滚动的单列数据。ListView的每一项都是一个View对象,这些View对象由适配器Adapter提供,并且在滚动时会被重复使用,以提高性能。ListView的代码示例如下: ```java ListView listView = findViewById(R.id.list_view); ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList); listView.setAdapter(adapter); ``` RecyclerView是Google推荐使用的新一代列表控件,它的设计目的是为了解决ListView的一些问题,并且提供更多的定制化功能。RecyclerView使用了ViewHolder模式,将每一项的View与数据分离开来,以提高性能。RecyclerView的代码示例如下: ```java RecyclerView recyclerView = findViewById(R.id.recycler_view); LinearLayoutManager layoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(layoutManager); MyAdapter adapter = new MyAdapter(dataList); recyclerView.setAdapter(adapter); ``` 其中MyAdapter是RecyclerView的适配器,它可以添加HeaderView和FooterView,还可以自定义每一项的布局和样式。同时,RecyclerView还支持添加分割线、添加动画效果等等。总的来说,RecyclerView比ListView更加灵活和高效,是Android开发中不可或缺的控件之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值