6

OSC Android源码学习笔记 四 listview初始化、获取数据、加载数据的流程

 3 years ago
source link: https://blog.yuantops.com/tech/osc-android-app-notes-4/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

OSC Android源码学习笔记 四 listview初始化、获取数据、加载数据的流程

OSC App显示的信息分为资讯(news),博客(blog),问答(Question),动弹(tweet)几屏,每屏对应一个ListView。以资讯(news)为例,粗略看一下它的ListView是如何初始化、获取数据、加载数据的。

  1. 实例化一个ListViewNewsApapter并添加到lvNews:
    lvNewsAdapter = new ListViewNewsAdapter(this, lvNewsData, R.layout.news_listitem);
    ListViewNewsApapter这个类继承BaseAdapter,重写了getView()方法。值得注意的是,getView()方法中news实体被被作为Tag添加到了listView的ItemView中。

为lvNews设置lvNewsAdapter。lvNews和lvNewsAdapter都是Main这个类持有的变量,而不是某个函数的局部变量。

  1. 为lvNews设置OnClickListener,这个Listener以匿名内部类方式初始化: 当点击单个item view时,从view中取出news这个Tag,然后使用UIHelper.showNewsRedirect()方法跳转到新闻阅读详情页。

  2. 实例化一个lvNewsHandler:

    lvNewsHandler = this.getLvHandler(lvNews, lvNewsAdapter, lvNews_foot_more, lvNews_foot_progress, AppContext.PAGE_SIZE);

这个Handler定义了当接收到有数据更新的通知时,应该作何处理。主要是通知adapter数据发生了变化:

adapter.notifyDataSetChanged();
  1. 下载数据,加载数据:
    loadLvNewsData(curNewsCatalog, 0, lvNewsHandler, UIHelper.LISTVIEW_ACTION_INIT);
    新开进程,调用appContext.getNewList()从服务器获取数据。数据获取完成后,通过传入的lvNewsHandler发送Message,回调handleMessage(Message msg)方法。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK