通话记录分析 --- 界面刷新

1.4,界面刷新

在此介绍2中复杂界面的刷新过程, ListView和RecyclerView。

4.1 ListView

在界面刷新时,会调用View的onLayout方法,对于ListView,就会调用父类AbsListView的onLayout方法,中间的过程以及种种方法在此不论述了,流程图如下,


在AbsListView的obtainView方法中,会调用ListAdapter对象的getView方法,

final View child = mAdapter.getView(position, scrapView, this);
4.2 RecyclerView

同样的, 在界面刷新时,会调用RecyclerView的onLayout方法,调用流程图如下,


getItemCount/onCreateViewHolder/onBindViewHolder这三个方法都是Adapter的抽象方法,因此需要子类实现。

通话记录是使用RecyclerView实现的,因此,主要论述onCreateViewHolder和onBindViewHolder方法。

4.3 onCreateViewHolder

CallLogAdapter的onCreateViewHolder方法如下,

public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    if (viewType == VIEW_TYPE_SHOW_CALL_HISTORY_LIST_ITEM) {
       return ShowCallHistoryViewHolder.create(mContext, parent);
    } else if (viewType == VIEW_TYPE_VOICEMAIL_PROMO_CARD) {
      return createVoicemailPromoCardViewHolder(parent);
    }
    return createCallLogEntryViewHolder(parent);
}

createCallLogEntryViewHolder的方法如下,

private ViewHolder createCallLogEntryViewHolder(ViewGroup parent) {
  LayoutInflater inflater = LayoutInflater.from(mContext);
  View view = inflater.inflate(R.layout.call_log_list_item, parent, false);
  CallLogListItemViewHolder viewHolder = CallLogListItemViewHolder.create(
      view, mContext, mExpandCollapseListener, mTelecomCallLogCache,
                mCallLogListItemHelper, mVoicemailPlaybackPresenter);

  viewHolder.callLogEntryView.setTag(viewHolder);
  viewHolder.callLogEntryView.setAccessibilityDelegate(mAccessibilityDelegate);
viewHolder.primaryActionView.setOnCreateContextMenuListener(mOnCreateContextMenuListener);
viewHolder.primaryActionView.setTag(viewHolder);
   return viewHolder;
}

由此,一条通话记录就对应一个CallLogListItemViewHolder对象。

4.4.onBindViewHolder

CallLogAdapter的onBindViewHolder方法如下,

case VIEW_TYPE_SHOW_CALL_HISTORY_LIST_ITEM:
    break;
case VIEW_TYPE_VOICEMAIL_PROMO_CARD:
    bindVoicemailPromoCardViewHolder(viewHolder);
    break;
default:
    bindCallLogListViewHolder(viewHolder, position);
    break;

参数中的viewHolder就是CallLogAdapter的onCreateViewHolder方法中构造的CallLogListItemViewHolder对象。

方法会调用bindCallLogListViewHolder方法加载每条通话记录的信息, bindCallLogListViewHolder方法的主要逻辑如下,

1,获取通话记录组中的第一个Cursor以及该组中的通话记录条数。

Cursor c = (Cursor) getItem(position);
if (c == null) {
   return;
}
int count = getGroupSize(position);

2,依次将号码等信息封装在ContactInfo, PhoneCallDetails以及CallLogListItemViewHolder类中。

3,控制是否显示分组,调用CallLogListItemViewHolder的showActions()函数是否显示新建联系人等信息(根据ContactInfo来决定)。

4,调用CallLogListItemViewHolder的setPhoto函数显示图标以及姓名等信息。

5,PhoneCallDetailsViews详细的显示PhoneCallDetails中的通话记录信息(通话时间以及归属地等等),并且PhoneCallDetailsViews是包含于CallLogListItemViewHolder中的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我个人认为最好用的话单分析软件,推荐给大家。 以下是网上得来的简介: 中谦(七星)话单分析软件”(Seven Star System,简称“3S”)系列软件是在全国工作“信息化、情报化”的大背景下产生的,其实现话单分析从原始的单一表格化直接上升至集图形化、关系化、关联化、海量化等多种展示方式于一身的可视化展示方式,并且包含了适用于内网网络版、互联网单机版及安卓手机版等多种应用场境下使用,极大地提高办案人员的工作效率。 现代生活的通讯资讯日渐发达,移动成了人们生活必不可少的工具,多数犯罪分子在作案的预谋、作案过程中都不同程度使用了移动,通话清单的分析为我们的侦查破案提供了排查嫌疑人的条件。但是从成千上万条的数字数据中分析出嫌疑人的生活、活动轨迹、人等情况,却不是人力所不能及的。 “七星话单分析”软件,可以对涉案的移动、联通、电信CDMA三类号码的实时通话清单进行最深层次的分析,内容涵盖了通话次数时长分析、活动轨迹分析、相互通话分析、共同人分析、居住地分析、同路人分析、出现或消失号码分析等,并独创了话单24小时时段通话折线统计图,使得通话规律情况以非常直观的方式表示出来。在相互通话分析、共同人分析、出现或消失号码分析中,均以直观的图形方式将通话关系表现出来,使人一目了然,当然还有许多小的、人性化的功能,比如指定时间段功能、不同界面上的搜索功能、对方通话所在地功能等。一直以来在话单分析中的基站位置数据识别是个大难题,在“七星话单分析”软件中增加了移动、联通通话基站地图定位功能模块,在分析居住地中增加了地图分析功能,直接在地图上可以分析查看嫌疑人的位置,为确定及抓捕嫌疑人提供较为充足的条件,在活动轨迹模块中,增加了单轨迹、多轨迹的电子地图显示功能,更有设计完好的单、多轨迹图表统计功能,最大限度地将分析对象的活动轨迹明了展现在分析人员面前,为办案人员提供最客观、最直接的参考信息。完美的解决了话单分析中基站位置数据识别的难题。办案人员只要通过简单的操作,就可将通话清单中包含的各种信息一览无余,为侦查破案提供了客观的依据。 特点: 1、便捷的话单导入功能 2、直观的可视化图形界面 3、强大的电子地图轨迹分析功能 4、高效的分布式数据存储方式 5、灵活的数据关联设计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值