设为首页 加入收藏

TOP

Android短彩信幻灯片异步加载机制
2014-11-24 07:56:44 来源: 作者: 【 】 浏览:0
Tags:Android 彩信 幻灯片 异步 加载 机制

首先根据当前回话,查询数据库,加载信息条目。每一个信息条目,每一条信息条目,用视图MessageListItem来显示,信息内容数据包装在MessageItem中。


MessageListAdapter.java


public View newView(Context context, Cursor cursor, ViewGroup parent) {
int boxType = getItemViewType(cursor);
View view = mInflater.inflate((boxType == INCOMING_ITEM_TYPE_SMS ||
boxType == INCOMING_ITEM_TYPE_MMS)
R.layout.message_list_item_recv : R.layout.message_list_item_send,
parent, false);
if (boxType == INCOMING_ITEM_TYPE_MMS || boxType == OUTGOING_ITEM_TYPE_MMS) {
// We've got an mms item, pre-inflate the mms portion of the view
view.findViewById(R.id.mms_layout_view_stub).setVisibility(View.VISIBLE);
}
return view;
}


这个view就是MessageLIstItem。然后MessagelistAdapter会调用bindView方法,完成视图的加载,在加载中,主要是调用MessageItem的bind方法。我们现在主要关心的是MessageItem对彩信内容数据的加载,以及着重注意异步加载幻灯片附件的逻辑处理。


@Override
public void bindView(View view, Context context, Cursor cursor) {
if (view instanceof MessageListItem) {
String type = cursor.getString(mColumnsMap.mColumnMsgType);
long msgId = cursor.getLong(mColumnsMap.mColumnMsgId);


MessageItem msgItem = getCachedMessageItem(type, msgId, cursor);
if (msgItem != null) {
MessageListItem mli = (MessageListItem) view;
int position = cursor.getPosition();
mli.bind(msgItem, position == cursor.getCount() - 1, position);
mli.setMsgListItemHandler(mMsgListItemHandler);
}
}
}


根据信息的type以及msgId,通过getCachedMessageItem方法,得到一个MessageItem。


public MessageItem getCachedMessageItem(String type, long msgId, Cursor c) {
MessageItem item = mMessageItemCache.get(getKey(type, msgId));
if (item == null && c != null && isCursorValid(c)) {
try {
item = new MessageItem(mContext, type, c, mColumnsMap, mHighlight, mFullTimestamp, mSentTimestamp);
mMessageItemCache.put(getKey(item.mType, item.mMsgId), item);
} catch (MmsException e) {
Log.e(TAG, "getCachedMessageItem: ", e);
}
}
return item;
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Matlab GUI之通用对话框 下一篇Android动画案例,淡入淡出效果

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·每日一道面试题-多线 (2025-12-26 06:20:17)
·java项目中哪些地方 (2025-12-26 06:20:14)
·Java真的是要没落了 (2025-12-26 06:20:12)
·C++ Lambda表达式保 (2025-12-26 05:49:45)
·C++ Lambda表达式的 (2025-12-26 05:49:42)