adapter学习

一 .ListView 不执行getView()方法

setAdapter 时,首先会执行getCount(),当getCount()  返回的是0时,就不会去执行getView()方法, 如果 开启线程去下载数据,然后在getCount()中返回其size, 开始的时候因为还没有下载数据,返回的size可能是0,所以不会去调用getView()方法,界面就不会被填充。    下载完成后  通过notifyDataSetChanged()方法 重新加载适配器,就会调用getView()方法了.

二. 重点参考 stackoverflow中的

http://stackoverflow.com/questions/7391797/listview-not-getting-populated-getview-isnt-getting-called

http://stackoverflow.com/questions/10165263/listview-is-not-populating-yet-getview-is-called?rq=1

Sometimes it seems notifyDataSetChanged() won’t work for you. Reasons why,

Your adapter loses reference to your list. When you first initialize the Adapter it takes a reference of your arrayList and pass to its superclass. But if you reinitialize your existing arrayList it losts the reference hence the communication channel with Adapter :(.

Always creating and adding a new list to the Adapter. Do like this:

  1. Initialize the arrayList while declaring globally.
  2. Add List to the adapter directly with out checking null and empty condition. Set the adapter to the list directly(don’t check for any condition). Adapter gives you the guarantee that wherever you are changes the data of arrayList it will take care, but never loose the reference.
  3. Add data to the arrayList Every time(if your data is completely new than you can call adapter.clear() and arrayList.clear() before actually adding data to the list) but don’t set the adapter i.e If the new data is populated in the arrayList than just adapter.notifyDataSetChanged()

三. notidydatasetchanged

http://stackoverflow.com/questions/3669325/notifydatasetchanged-example

时间: 2024-11-06 07:29:43

adapter学习的相关文章

ApiDemos-->Views-lists-slow adapter学习

今天来按照apidemos提供的方法来实现slow loading的效果. 简单说下实现方法: 实现ListView.OnScrollListener ,监听到手势滑动的情况,当处于滚动状态时,将新显示的items 设置为Loading , 当离开屏幕时,才加载真实的数据. 设置数据时,要用到getFirstVisiblePosition属性来计算应该加载第几个item. 该小demo应该算是学习Android AsyncTask异步加载的基础. Main.java import android

ApiDemos-->Views-lists-slow adapter学习

今天来依照apidemos提供的方法来实现slow loading的效果. 简单说下实现方法: 实现ListView.OnScrollListener ,监听到手势滑动的情况,当处于滚动状态时,将新显示的items 设置为Loading , 当离开屏幕时,才载入真实的数据. 设置数据时,要用到getFirstVisiblePosition属性来计算应该载入第几个item. 该小demo应该算是学习Android AsyncTask异步载入的基础. Main.java import android

listview中的adapter学习小结

概述 Adapter是数据和UI之间的一个桥梁,在listview,gridview等控件中都会使用到,android给我们提拱了4个adapte供我们使用: BaseAdapter是一个抽象类,继承它需要实现较多的方法 ArrayAdapter支持泛型操作,最为简单,只能展示一行字 SimpleAdapter有最好的扩充性,可以自定义出各种效果 SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来.如需要实现更复杂的UI也

使用同步适配器(sync adapter)数据传输

在android设备与webserver之间实现数据同步能显著提高你的应用的有用性.让你的应用更受用户的欢迎. 比方说.你的数据上传给webserver,这就有了一个有用的备份.当用户的设备离线工作时,这时从server下载输数据是非常有用的.有些情况下,用户可能会认为通过网页的同步接口来输入或编辑数据更方便,由于这些数据非常快就从同页上同步过来了,他们也可能想在一段时间内採集数据然后再将数据上传到中央存储区. 虽然你能够自己为你的应用设计一套传输数据系统, 你仍应该考虑使用Android的Sy

使用同步适配器(sync adapter)传输数据

在android设备与web服务器之间实现数据同步能显著提高你的应用的实用性,让你的应用更受用户的欢迎.比如说,你的数据上传给web服务器,这就有了一个实用的备份.当用户的设备离线工作时,这时从服务器下载输数据是很有用的.有些情况下,用户可能会觉得通过网页的同步接口来输入或编辑数据更方便,因为这些数据很快就从同页上同步过来了,他们也可能想在一段时间内采集数据然后再将数据上传到中央存储区. 尽管你可以自己为你的应用设计一套数据传输系统, 你仍应该考虑使用Android的Sync adapter f

Android学习四、Android中的Adapter

一.Adapter的介绍 An Adapter object acts as a bridge between an AdapterView and the underlying data for that view. The Adapter provides access to the data items. The Adapter is also responsible for making a View for each item in the data set. 一个Adapter是Ad

【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter

目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续探讨BaseAdapter 我们可以同继承抽象类BaseAdapter来实现自己的Adapter,自己设置子View的UI,不同子View可以由不同的布局,并自己进行数据和子view中数据的对应关系.图是例子的呈现结果,我们有很多图标,对这些图标按一定大小进行缩放,然后布局在GridView中.这个

【转】Pro Android学习笔记(十八):用户界面和控制(6):Adapter和AdapterView

目录(?)[-] SimpleCursorAdapter 系统预置的layout ArrayAdapter 动态数据增插删排序 自定义TextView风格 其他Adapter AdapterView不仅仅是UI,同时还将数据关联到UI上,例如在手机中经常使用的ListView就是AdapterView. ListView.GridView.Spinner和Gallery都是AdapterView,AdapterView是ViewGroup,也就是容器,含有多个UI布局相同的子view.对于Ada

android学习笔记之ListView 和Adapter适配器

1.在学习Listview时候用到了Adapter适配器,定义MyAdapter时候需要继承ListAdapter接口,接口里很多方法没有实现,为了方便google工程师实现了个BaseAdapter类,我们在使用的时候可以继承这个抽象类,因此我们只需要完成几个抽象方法就可以了. public class Db_adapter extends BaseAdapter { private Context context; private List<Person> personlist; publ