`

关于listview或gridview刷新问题

 
阅读更多

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;
			}
		}
	}
  }



 

    大概思路就是将选中状态进行更改保存,根据选中状态更改图片显示情况

   

    

 

 

   

分享到:
评论

相关推荐

    listview gridview 上拉加载 下拉刷新 包含6个demo

    5. "scrollview ListView GridView上拉刷新下拉加载":此项目可能包含在一个ScrollView容器内嵌套ListView和GridView的上拉刷新和下拉加载实现,这对于处理复杂布局的场景很有用。 6. "MyGridCustomDemo":这可能是...

    listView 嵌套gridView android

    在Android开发中,ListView和GridView是两种常用的布局控件,分别用于展示长列表和多列网格数据。ListView具有良好的滚动性能,适合展示大量数据,而GridView则常用于展示图片、小图标等,形成整齐的网格布局。当...

    Android ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多

    最后,关于`ScrollView_GridView_listViewRefresh_Demo`这个示例项目,它很可能是包含了一个实际运行的代码实例,演示了如何在ScrollView中嵌套ListView和GridView,并实现了上下拉刷新和加载更多功能。通过查看和...

    ListView嵌套GridView解决方案

    由于ListView和GridView的嵌套可能会导致性能问题,如过度绘制和滚动不流畅,因此我们需要进行一些优化: 1. 使用ViewHolder模式减少查找视图的时间。 2. 使用`convertView`复用已创建的视图,避免频繁的布局创建。...

    ListView和GridView的上拉加载下拉刷新

    综上所述,通过结合SwipeRefreshLayout实现下拉刷新,监听ListView或GridView的滚动事件实现上拉加载更多,我们可以为用户带来更加流畅和便捷的使用体验。同时,需要注意性能优化和异常处理,确保应用的稳定性和用户...

    android-ListView内嵌GridView

    在Android开发中,ListView和GridView是两种常用的布局控件,它们用于展示大量数据。ListView以其垂直滚动、可复用视图的优势,常用于显示一列数据;而GridView则以网格形式展示,通常用于图片或者小图标等需要均匀...

    listView webView GridView 下拉刷新

    在Android开发中,下拉刷新(Pull-to-Refresh)是一种常见的功能,特别是在列表视图(ListView)、网格视图(GridView)以及Web视图(WebView)等需要展示大量数据的场景下。下拉刷新允许用户通过向下拉动界面来触发数据的...

    listview和gridview下拉刷新,上拉加载更多

    SwipeRefreshLayout包含一个可以被刷新的子视图,例如ListView或GridView,当用户下拉子视图时,SwipeRefreshLayout会显示一个刷新指示器,同时开发者需要在回调方法中更新数据。 **上拉加载更多**则是在用户滚动到...

    ListView嵌套GridView 并实现行列选择

    在某些场景下,我们可能需要在一个ListView中嵌套一个或多个GridView,以达到更复杂的布局效果,比如表格形式的数据展示。本文将详细探讨如何实现ListView嵌套GridView,并实现行列选择的功能。 首先,我们要理解...

    ScrollView ListView和GridView下拉刷新上拉加载更多

    在Android开发中,ScrollView、ListView和GridView是三种常用的布局组件,它们都用于展示多行或多列的数据。然而,原生的这些组件并不直接支持下拉刷新和上拉加载更多的功能,这在现代移动应用中是必不可少的特性。...

    RecyclerView 瀑布流、ListView、GridView实例源码

    在Android开发中,UI界面的展示是至关重要的,RecyclerView、ListView和GridView是常见的列表控件,用于展示大量的数据。本文将深入探讨这三个组件,并通过一个Demo_recyclerview的实例源码来解析它们的工作原理和...

    listview中嵌套gridview

    ListView以其垂直滚动和可自定义项视图的特点,而GridView则以网格形式排列元素,适合显示多列、等宽或等高的内容。当需要在一个ListView的每一项内部再展示一个GridView时,就出现了“ListView中嵌套GridView”的...

    下拉刷新完整代码(listview,gridview等)

    SwipeRefreshLayout是Google提供的一个容器组件,可以包含一个子视图,如ListView或GridView,并提供下拉刷新的功能。以下是使用SwipeRefreshLayout的基本步骤: 1. 在布局XML文件中添加SwipeRefreshLayout: ```...

    ListView+GridView上拉,下拉刷新

    SwipeRefreshLayout是Android SDK自带的一个组件,它可以包裹一个子视图(如ListView或GridView),并提供下拉刷新的功能。使用方法如下: 1. 在布局文件中添加SwipeRefreshLayout,并设置其子视图为ListView或...

    Android PullToRefresh (ListView GridView 下拉刷新) 程序源码使用详解

    对于GridView的下拉刷新,步骤与ListView基本相同,只需将ListView替换为GridView,并确保GridView的高度设置为wrap_content或match_parent。 最后,需要注意的是,为了保持良好的用户体验,应尽可能优化刷新操作的...

    android ListView和GridView拖拽移位实现代码

    4. **更新视图**:调用adapter的notifyDataSetChanged()方法通知系统数据已改变,ListView或GridView会自动更新视图,显示新的排序。 5. **动画效果**:为了提升用户体验,可以添加动画效果。在数据交换后,使用...

    Listview,Gridview空数据处理

    - 当ListView或GridView没有数据时,我们可以添加一个特殊的视图——Empty View,来显示“无数据”或者其他提示信息。这个视图在数据填充时会被隐藏,只有当数据为空时才会显示。 3. **实现步骤** - **创建布局**...

    Andoird上拉下拉刷新,支持ListView,GridView

    SwipeRefreshLayout是一个包含其他可滚动视图的容器,比如ListView或GridView,当用户在顶部或底部滑动时,它会触发刷新动画。这个组件的核心在于它可以监听用户的触摸事件,并据此触发相应的刷新操作。 以下是如何...

    listview,gridview上拉下拉刷新

    然后,通过XML布局或编程方式将PullToRefresh组件添加到ListView或GridView之上,并设置相应的监听器来处理刷新事件。在监听器中,开发者可以执行数据的刷新或加载操作,更新UI以反映新的内容。 在实际开发中,需要...

    ListView_GridView2

    - 在“ListView_GridView2”项目中,为了实现QQ好友列表的效果,我们需要创建一个自定义的Adapter,继承自BaseAdapter或ArrayAdapter,重写其中的方法,如`getView()`,以定制每个列表项的显示样式和内容。...

Global site tag (gtag.js) - Google Analytics