|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
多线程问题还有胶水代码的问题建立一个基于CoreData的工程你会看到他自动创建3个类的对象NSManagedObjectModel管理数据的存储结构文件扩展名是xcdatamodeldNSPersistentStoreCoordinator用来管理底层数据的存储用官方的话说CoreDataisnotarelationaldatabaseorarelationaldatabasemanagementsystem(RDBMS)在比来的一个客户使用中,我碰到了一个需求,依据选定的值来天生指定命量的编纂框字段,如许用户能够输出人物信息。最后我的设法是把这些逻辑放到Fragment中,只是依据选中值的变更来向线性结构容器中增添编纂框数目,可是那样做会使Fragment过分收缩,并且没有太多可重用性方面的思索。
<br>
这是一个尽好的时机,能够将这些交互功效封装到自界说视图中。自界说视图能够在全部使用局限重用(今朝为止最少有2个中央),而且让测试封装功效变得我加倍轻松。
甚么是自界说视图
Android框架供应了良多的视图和结构,但有些情形下开辟者必要创立本人的视图。偶然候是扩大内置的类来增添功效,就像在文本框中撑持自界说字体和字符间距。其他情形下,由于内置的视图不克不及供应所需的功效,就像径向刻度盘。
如今会商的是自界说复合视图。视图由多个其他的视图构成,内置的或自界说的都能够,用来封装庞大的交互和功效。
在一个成熟且完全的Fragment完整满意我需求的情形下,我利用了复合视图,由于我想要一个可重用、可测试的组件。下面的例子很好的申明了这类情形。因为代码属于一个客户项目,以是我在这里创立了一个复杂的项目展现怎样创立和利用自界说视图。
自界说视图
在本例中,我们但愿自界说视图增加编纂框,如许用户就能够输出恣意数目的数据条目。在自界说视图中,能够经由过程利用一个包括了得当数目编纂框的复杂容器视图(线性结构)完成,因此能够很简单地猎取称号列表。代码以下:
<p>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/**
*Acustomcompoundviewthatdisplaysanarbitrary
*numberoftextviewstoenteryourfriendsnames.
*/
publicclassFriendNameViewextendsLinearLayout{
privateintmFriendCount;
privateintmEditTextResId;
publicFriendNameView(Contextcontext){
this(context,null);
}
publicFriendNameView(Contextcontext,AttributeSetattrs){
this(context,attrs,0);
}
publicFriendNameView(Contextcontext,AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
setOrientation(VERTICAL);
}
publicintgetFriendCount(){
returnmFriendCount;
}
publicvoidsetFriendCount(intfriendCount){
if(friendCount!=mFriendCount){
mFriendCount=friendCount;
removeAllViews();
for(inti=0;i<mFriendCount;i++){
addView(createEditText());
}
}
}
privateViewcreateEditText(){
Viewv;
if(mEditTextResId>0){
LayoutInflaterinflater=LayoutInflater.from(getContext());
<p>v=inflater.inflate(mEditTextResId,this, |
|