1.notifydataSetChanged与notifyDataSetInvalidated
该文章是分析NotifydataSetView源码的:http://www.cnblogs.com/kissazi2/p/3721941.html
Changed means the data set changed. Individual items updated,
or items were added or removed. Invalidated means the data source is no longer available.
————两者的区别
2 局部刷新listview
面试的时候被问及你是如何刷新listview的,我很干脆的就notifydatachanged。。没了,但是notifydatachanged
重新绘制的是整个listivew(此处待考证,网络上说是刷新当前可见区域)
以下就是局部刷新的重要代码
public void updateView(int itemIndex) { //得到第一个可显示控件的位置 int visiblePosition = mListView.getFirstVisiblePosition(); //只有当要更新的view在可见的位置时才更新,不可见时,跳过不更新 if (itemIndex - visiblePosition >= 0) { //得到要更新的item的view View view = mListView.getChildAt(itemIndex - visiblePosition); if(view!=null){ //此处的getView是调用adpater重写的方法getView getVIew(itemIndex,view,listview); } } }
3 gridview单选实现
gridview的单选实现方法重要代码如下
@override ..getView(..){ ... //该img是打钩图片 ImageView img = (ImageView) arg1.findViewById(R.id.img_cest); setChecked(img, arg0); ... } /** * 如果点击选择了该item则显示打钩的图片,否则隐藏 * **/ public void setChecked(ImageView img, int arg0) { if (check[arg0] == 0) { img.setVisibility(View.INVISIBLE); } else { img.setVisibility(View.VISIBLE); } } public void setSelectedItem(int itemPostion) { this.currentItem = itemPostion; getChecked(); //调用notifydatasetChanged()重绘制listview notifyDataSetChanged(); } /** * check[]保存选中状态0表示未选中,1表示选中 * **/ public void getChecked() { for (int i = 0; i < check.length; i++) { if (currentItem == i) { if (check[i] == 0) { check[i] = 1; } else if (check[i] == 1) { check[i] = 0; } } } }
大概思路就是将选中状态进行更改保存,根据选中状态更改图片显示情况
相关推荐
5. "scrollview ListView GridView上拉刷新下拉加载":此项目可能包含在一个ScrollView容器内嵌套ListView和GridView的上拉刷新和下拉加载实现,这对于处理复杂布局的场景很有用。 6. "MyGridCustomDemo":这可能是...
在Android开发中,ListView和GridView是两种常用的布局控件,分别用于展示长列表和多列网格数据。ListView具有良好的滚动性能,适合展示大量数据,而GridView则常用于展示图片、小图标等,形成整齐的网格布局。当...
最后,关于`ScrollView_GridView_listViewRefresh_Demo`这个示例项目,它很可能是包含了一个实际运行的代码实例,演示了如何在ScrollView中嵌套ListView和GridView,并实现了上下拉刷新和加载更多功能。通过查看和...
由于ListView和GridView的嵌套可能会导致性能问题,如过度绘制和滚动不流畅,因此我们需要进行一些优化: 1. 使用ViewHolder模式减少查找视图的时间。 2. 使用`convertView`复用已创建的视图,避免频繁的布局创建。...
综上所述,通过结合SwipeRefreshLayout实现下拉刷新,监听ListView或GridView的滚动事件实现上拉加载更多,我们可以为用户带来更加流畅和便捷的使用体验。同时,需要注意性能优化和异常处理,确保应用的稳定性和用户...
在Android开发中,ListView和GridView是两种常用的布局控件,它们用于展示大量数据。ListView以其垂直滚动、可复用视图的优势,常用于显示一列数据;而GridView则以网格形式展示,通常用于图片或者小图标等需要均匀...
在Android开发中,下拉刷新(Pull-to-Refresh)是一种常见的功能,特别是在列表视图(ListView)、网格视图(GridView)以及Web视图(WebView)等需要展示大量数据的场景下。下拉刷新允许用户通过向下拉动界面来触发数据的...
SwipeRefreshLayout包含一个可以被刷新的子视图,例如ListView或GridView,当用户下拉子视图时,SwipeRefreshLayout会显示一个刷新指示器,同时开发者需要在回调方法中更新数据。 **上拉加载更多**则是在用户滚动到...
在某些场景下,我们可能需要在一个ListView中嵌套一个或多个GridView,以达到更复杂的布局效果,比如表格形式的数据展示。本文将详细探讨如何实现ListView嵌套GridView,并实现行列选择的功能。 首先,我们要理解...
在Android开发中,ScrollView、ListView和GridView是三种常用的布局组件,它们都用于展示多行或多列的数据。然而,原生的这些组件并不直接支持下拉刷新和上拉加载更多的功能,这在现代移动应用中是必不可少的特性。...
在Android开发中,UI界面的展示是至关重要的,RecyclerView、ListView和GridView是常见的列表控件,用于展示大量的数据。本文将深入探讨这三个组件,并通过一个Demo_recyclerview的实例源码来解析它们的工作原理和...
ListView以其垂直滚动和可自定义项视图的特点,而GridView则以网格形式排列元素,适合显示多列、等宽或等高的内容。当需要在一个ListView的每一项内部再展示一个GridView时,就出现了“ListView中嵌套GridView”的...
SwipeRefreshLayout是Google提供的一个容器组件,可以包含一个子视图,如ListView或GridView,并提供下拉刷新的功能。以下是使用SwipeRefreshLayout的基本步骤: 1. 在布局XML文件中添加SwipeRefreshLayout: ```...
SwipeRefreshLayout是Android SDK自带的一个组件,它可以包裹一个子视图(如ListView或GridView),并提供下拉刷新的功能。使用方法如下: 1. 在布局文件中添加SwipeRefreshLayout,并设置其子视图为ListView或...
对于GridView的下拉刷新,步骤与ListView基本相同,只需将ListView替换为GridView,并确保GridView的高度设置为wrap_content或match_parent。 最后,需要注意的是,为了保持良好的用户体验,应尽可能优化刷新操作的...
4. **更新视图**:调用adapter的notifyDataSetChanged()方法通知系统数据已改变,ListView或GridView会自动更新视图,显示新的排序。 5. **动画效果**:为了提升用户体验,可以添加动画效果。在数据交换后,使用...
- 当ListView或GridView没有数据时,我们可以添加一个特殊的视图——Empty View,来显示“无数据”或者其他提示信息。这个视图在数据填充时会被隐藏,只有当数据为空时才会显示。 3. **实现步骤** - **创建布局**...
SwipeRefreshLayout是一个包含其他可滚动视图的容器,比如ListView或GridView,当用户在顶部或底部滑动时,它会触发刷新动画。这个组件的核心在于它可以监听用户的触摸事件,并据此触发相应的刷新操作。 以下是如何...
然后,通过XML布局或编程方式将PullToRefresh组件添加到ListView或GridView之上,并设置相应的监听器来处理刷新事件。在监听器中,开发者可以执行数据的刷新或加载操作,更新UI以反映新的内容。 在实际开发中,需要...
- 在“ListView_GridView2”项目中,为了实现QQ好友列表的效果,我们需要创建一个自定义的Adapter,继承自BaseAdapter或ArrayAdapter,重写其中的方法,如`getView()`,以定制每个列表项的显示样式和内容。...