Android 面试题总结之Android 基础(ListView)(五)
前几篇面试总结中,主要讲了Android 的四大组件的相关知识点,希望在大家日常工作中有所帮助,那么在本节中主要是Android 必不可少的ListView 的相关知识点。Listview 类似的控件 ,不管是在.Net 中 ,还是在Java 中 都是使用非常广泛。正因为他的重要性,内容比较多,所以单独章节的介绍。前两篇文章传送门:
Android 面试题总结之Android 基础(一)
Android 面试题总结之Android 基础(二)
Listview 基础问题
当 ListView 数据集改变后,如何更新 ListView?
使用该 ListView 的 adapter 的 notifyDataSetChanged()方法。该方法会 使 ListView 重新绘制。
ListView 如何实现分页加载
- 设 置 ListView 的 滚 动 监 听 器 : setOnScrollListener(new OnScrollListener{….})
在监听器中有两个方法: 滚动状态发生变化的方法 (onScrollStateChanged)和 listView 被滚动时调用的方法(onScroll) - 在滚动状态发生改变的方法中,有三种状态:
手指按下移动的状态: SCROLL_STATE_TOUCH_SCROLL: // 触摸滑动
惯性滚动(滑翔(flgin)状态): SCROLL_STATE_FLING: // 滑翔 静止状态:
SCROLL_STATE_IDLE: // 静止
对不同的状态进行处理:
分批加载数据,只关心静止状态:关心最后一个可见的条目,如果最后一个 可见条目就是数据适配器(集合)里的最后一个,此时可加载更多的数据。在每 次加载的时候,计算出滚动的数量,当滚动的数量大于等于总数量的时候,可以 提示用户无更多数据了。- 设 置 ListView 的 滚 动 监 听 器 : setOnScrollListener(new OnScrollListener{….})
ListView 如何显示多种类型的Item
ListView 显示的每个条目都是通过 baseAdapter 的 getView(int position, View convertView, ViewGroup parent)来展示的,理 论上我们完全可以让每个条目都是不同类型的 view。
比如:从服务器拿回一个标识为 id=1,那么当 id=1 的时候,我们就加载类 型一的条目,当 id=2 的时候,加载类型二的条目。常见布局在资讯类客户端中 可以经常看到。
除此之外 adapter 还提供了 getViewTypeCount()和 getItemViewType(int position)两个方法。在 getView 方法中我们可以根据不 同的 viewtype 加载不同的布局文件。ListView 如何定位到指定位置?
可以通过 ListView 提供的 lv.setSelection(listView.getPosition());方法。在ListView中设置Selector为null会报空指针?
mListView