`
lx休止符
  • 浏览: 14352 次
  • 来自: dsadsa
最近访客 更多访客>>
社区版块
存档分类
最新评论

【转】ListView中getChildAt(index)的使用注意事项

 
阅读更多

1.原理 
在很多时候ListView列表数据不需要全部刷新,只需刷新有数据变化的那一条,这时可以用getChildAt(index)获取某个指定position的view,并对该view进行刷新。 

注意:在ListView中,使用getChildAt(index)的取值,只能是当前可见区域(列表可滚动)的子项! 

即取值范围在 >= ListView.getFirstVisiblePosition() &&  <= ListView.getLastVisiblePosition(); 
1)所以如果想获取前部的将会出现返回Null值空指针问题; 
2)getChildCount跟getCount获取的值将会不一样(数量多时); 
3 )如果使用了getChildAt(index).findViewById(...)设置值的话,滚动列表时值就会改变了。 
   需要使用getFirstVisiblePosition()获得第一个可见的位置,再用当前的position-它,再用getChildAt取值!即getChildAt(position - ListView。getFirstVisiblePosition()).findViewById(...)去设置值 
2.如果想更新某一行数据,需要配合ListView的滚动状态使用,一般不滚动时才加载更新数据 

//全局变量,用来记录ScrollView的滚动状态,1表示开始滚动,2表示正在滚动,0表示停止滚动  
伪代码 
ListView设置 
public int scrollStates; 
class OnScrollListenerImpl implements OnScrollListener{ 
@Override 
public void onScrollStateChanged(AbsListView view, int scrollState) { 
scrollStates = scrollState;  


@Override 
public void onScroll(AbsListView view, int firstVisibleItem, 
int visibleItemCount, int totalItemCount) { 
int lastInScreen = firstVisibleItem + visibleItemCount; 

listView.setOnScrollListener(new OnScrollListenerImpl()); 


Activity中 
if(scrollStates==OnScrollListener.SCROLL_STATE_IDLE){ 

更新视图数据 

分享到:
评论

相关推荐

    ListView中HeadView的使用

    本教程将详细介绍如何在ListView中添加并使用HeadView。 首先,HeadView可以看作是ListView中的一个特殊项,它位于数据列表的最上方。与普通列表项不同,HeadView并不参与数据适配器的数据循环,因此不会被ListView...

    ListView嵌套GridView使用详解及注意事项

    import java.util.ArrayList; import java.util.HashMap;... /** * Demo描述: * ListView嵌套GridView使用详解 * 即ListView的每个Item中都包含一个GridView * * 注意事项: * 由于ListView和GridV

    C# ListView中添加ComboBox等控件

    通过以上步骤,你就可以在C#的ListView中成功地添加并使用ComboBox控件了。这使得用户界面更具交互性,允许用户在ListView的每一项中进行选择,极大地增强了用户体验。记住,关键在于正确地创建、添加和绑定事件到...

    C# ListView中添加多种自定义控件源码

    本主题将深入探讨如何在C#的ListView中添加和使用各种自定义控件,如CheckBox和ComboBox,以增强用户体验和功能。 一、ListView控件基础 ListView控件允许我们展示数据列表,并提供了多种视图模式,如小图标、大...

    ListView中Spinner的使用

    本篇文章将深入探讨如何在ListView中集成和使用Spinner,以及解决与之相关的事件处理和状态保持问题。 首先,Spinner的基本用法包括创建Spinner对象、设置Adapter和定义监听器。在Android中,Spinner通常通过...

    在ListView中嵌套Switch开关,点击ListView条目来切换Switch的状态

    - 为了提高ListView的滚动性能,通常会在`getView()`方法中使用convertView和ViewHolder模式。ViewHolder持有列表项中各个控件的引用,避免频繁的findViewById操作。 4. **Switch的使用**: - Switch是Android的...

    ListView中的点击事件注意及分页的功能

    在Android中,我们可以使用OnScrollListener监听ListView的滚动事件。当监听到滚动到底部时,通过网络请求或本地数据库获取下一页数据,然后添加到现有的数据集中,再次调用adapter的notifyDataSetChanged()方法。 ...

    VB中,Listview中的数据如何存入 access 的表中VISUALBASIC源码系列

    在VB中,我们可以通过ListView1.Items集合来访问和修改这些项目,通过ListView1.SubItems(index, subIndex)来获取或设置特定子项的值。 存入Access之前,我们需要创建一个与Listview对应的数据库表。表的字段数量应...

    连接Excel并显示在ListView中

    - 填充ListView:通过循环遍历数据,使用`ListView.Items.Add(new ListViewItem(itemArray))`添加每一行数据到ListView中,其中itemArray是对应列的值数组。 此外,还需要注意一些细节和优化点: - 错误处理:...

    ListView中的数据转换到Excel中

    在项目中使用Office Interop库时,要注意安装了相应的Office版本,且运行环境必须是桌面环境,因为不能在服务器或无UI环境中使用。 总之,将ListView数据转换为Excel是一种常见的数据导出需求,通过使用.NET ...

    ListView中添加CheckBox

    1、ListView item中加入checkbox后onListItemClick 事件无法触发。 原因:checkbox的优先级高于ListItem于是屏蔽了ListItem的单击事件。 解决方案:设置checkbox的android:focusable="false" 2、选择其中的...

    C# ListView使用例子ListView排列方式演示

    在这个"C# ListView使用例子ListView排列方式演示"中,我们将深入探讨如何利用ListView来展示数据,并对其进行排序。 ListView控件在Windows Forms应用程序中扮演着重要角色,它可以用来显示文件系统、数据库或其他...

    C#中ListView控件的虚模式使用方法

    包含的文件"**C#中ListView控件的虚模式使用方法**"很可能是示例代码或者教程文档,它会详细解释如何配置和使用虚模式,包括事件处理、数据提供者的实现以及性能调优技巧。通过学习和实践这个资源,开发者可以掌握...

    ListView中的几种位置关系和LayoutAnimation在listview中的应用

    在ListView中使用LayoutAnimation,可以提升用户的交互体验,使数据加载或刷新过程更加生动有趣。 要实现ListView的LayoutAnimation,首先需要创建一个AnimationController,这可以通过XML动画资源或编程方式实现。...

    treeview和listview结合使用的例子

    在实际应用中,`TreeView`和`ListView`经常结合使用,例如在资源管理器式的界面中。当用户在`TreeView`中选择一个节点时,对应的`ListView`会更新显示与该节点相关的详细信息。这可以通过事件处理和数据绑定来实现:...

    ListView中动态添加数据

    在Android开发中,ListView是一种常用的UI组件,它允许开发者显示一组长列表的数据,通常用于展示大量可滚动的信息。本篇文章将深入探讨如何在ListView中动态添加数据,这在实际应用中是非常常见且重要的功能。 ...

    listview tabhost 的各种使用

    - **优化性能**:如果ListView包含大量数据,需要注意性能优化,比如使用ViewHolder模式减少视图查找,或使用分页加载等技术。 4. **其他相关技术** - **数据缓存**:为了提高用户体验,通常会将网络获取的数据...

    ListView中嵌入Gallery

    注意在`getView`方法中,为每个ListView item中的Gallery设置适配器。 最后,在Activity中设置ListView的Adapter并启动滚动: ```java ListView listView = findViewById(R.id.listView); List&lt;String&gt; ...

Global site tag (gtag.js) - Google Analytics