小编SVD*_*SVD的帖子

将项添加到ListView而不重新加载

我想知道是否有办法将项目添加到ListView而不会导致重新加载整个列表.

我有一个BaseAdapter派生的ListView适配器,当底层模型添加一个新元素时,它调用notifyDataSetChanged(),它触发ListView重新加载.

列表中的元素具有图像,这些图像根据元素的内容动态加载.问题是,当在重新加载期间调用getView()时,传递以供重用的convertView参数之前来自不同的位置,因此也必须重新加载图像,这会导致相当难看的闪烁.

如果我只在最后添加一个项目(这将是添加新项目的唯一方法),那么有没有办法重新加载整个列表?或者至少以某种方式将单元重用于相同的位置,如果可能的话,以避免昂贵的图像重载?

android android-listview android-adapter

13
推荐指数
1
解决办法
3153
查看次数

获取地址簿联系人的组?

我想知道是否有办法让特定联系人所属的群组?

假设我得到了所有联系人的数组:

NSMutableArray *people = [[[(NSArray*) 
      ABAddressBookCopyArrayOfAllPeople(addressBook) autorelease] 
      mutableCopy] autorelease];
Run Code Online (Sandbox Code Playgroud)

然后迭代它们:

for (int personN = 0; personN < [people count]; personN++) {
ABRecordRef person = [people objectAtIndex:personN];
NSString* firstName = (NSString*)ABRecordCopyValue(person, 
                      kABPersonFirstNameProperty);
//and so on...
} 
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得该人的团体名称?在MacOS上有ABPerson类,它具有我所需要的parentGroups方法,但我在iOS上看不到类似的东西.

我想可以改为获取所有组的数组,然后迭代组数组并检索每个组的联系人记录,但我希望有更直接的方法吗?

PS看起来没有办法做到这一点,只能迭代组.对于那些后来发现这个问题的人来说,有一点需要注意:要获得所有联系人,你必须遍历组并获得每个组的成员(ABGroupCopyArrayOfAllMembers),然后遍历所有联系人(ABAddressBookCopyArrayOfAllPeople),因为没有"null"组.另请注意,ABAddressBookCopyArrayOfAllPeople还会为您提供已使用ABGroupCopyArrayOfAllMembers调用获取的联系人,因此请务必检查重复项.

iphone cocoa-touch ios

6
推荐指数
1
解决办法
2226
查看次数