Skip to content

Commit d43deae

Browse files
committed
Merge pull request yangfuhai#34 from lsjwzh/master
增加在sd卡创建数据库的方法
2 parents 938dc25 + 05b72f3 commit d43deae

File tree

9 files changed

+420
-131
lines changed

9 files changed

+420
-131
lines changed

README.md

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,32 @@ db.save(user);
4545
```
4646

4747
----
48-
48+
##FinalDB OneToMany懒加载使用方法:
49+
模型定义:
50+
```java
51+
public class Parent{
52+
private int id;
53+
@OneToMany(manyColumn = "parentId")
54+
private OneToManyLazyLoader<Parent ,Child> children;
55+
/*....*/
56+
}
57+
public class Child{
58+
private int id;
59+
private String text;
60+
@ManyToOne(column = "parentId")
61+
private Parent parent;
62+
/*....*/
63+
}
64+
```
65+
使用:
66+
```java
67+
List<Parent> all = db.findAll(Parent.class);
68+
for( Parent item : all){
69+
if(item.getChildren ().getList().size()>0)
70+
Toast.makeText(this,item.getText() + item.getChildren().getList().get(0).getText(),Toast.LENGTH_LONG).show();
71+
}
72+
```
73+
----
4974
##FinalActivity使用方法:
5075
* 完全注解方式就可以进行UI绑定和事件绑定
5176
* 无需findViewById和setClickListener等
@@ -67,6 +92,22 @@ public class AfinalDemoActivity extends FinalActivity {
6792
}
6893
}
6994
```
95+
*在其他侵入式框架下使用(如ActionBarShelock)
96+
```java
97+
protected void onCreate(Bundle savedInstanceState) {
98+
super.onCreate(savedInstanceState);
99+
setContentView(view);
100+
FinalActivity.initInjectedView(this);
101+
}
102+
```
103+
*在Fragment中使用
104+
```java
105+
public View onCreateView(LayoutInflater inflater, ViewGroup container,
106+
Bundle savedInstanceState) {
107+
View viewRoot = inflater.inflate(R.layout.map_frame, container, false);
108+
FinalActivity.initInjectedView(this,viewRoot);
109+
}
110+
```
70111
##FinalHttp使用方法:
71112
###普通get方法
72113

src/net/tsz/afinal/FinalActivity.java

Lines changed: 57 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -36,113 +36,143 @@ protected void onCreate(Bundle savedInstanceState) {
3636

3737
public void setContentView(int layoutResID) {
3838
super.setContentView(layoutResID);
39-
initView();
39+
FinalActivity.initInjectedView(this);
4040
}
4141

4242

4343
public void setContentView(View view, LayoutParams params) {
4444
super.setContentView(view, params);
45-
initView();
45+
FinalActivity.initInjectedView(this);
4646
}
4747

4848

4949

5050
public void setContentView(View view) {
5151
super.setContentView(view);
52-
initView();
52+
FinalActivity.initInjectedView(this);
5353
}
5454

55+
/**
56+
* 初始化Actvity中的注入属性
57+
* 可用于与其他框架合用(如ActionBarShelock)
58+
* <p>
59+
* *必须在setContentView之后调用:
60+
* <pre>
61+
* protected void onCreate(Bundle savedInstanceState) {
62+
* super.onCreate(savedInstanceState);
63+
* setContentView(view);
64+
* FinalActivity.initInjectedView(this);
65+
* }
66+
* </pre>
67+
* @param sourceActivity
68+
*/
69+
public static void initInjectedView(Activity sourceActivity){
70+
initInjectedView(sourceActivity,sourceActivity.getWindow().getDecorView());
71+
}
5572

56-
57-
private void initView(){
58-
Field[] fields = getClass().getDeclaredFields();
73+
/**
74+
* 初始化指定View中的注入属性
75+
* 可用于Fragment内使用InjectView<p>
76+
* 示例:<p>
77+
* 在onCreateView中:
78+
* <pre>
79+
* public View onCreateView(LayoutInflater inflater, ViewGroup container,
80+
* Bundle savedInstanceState) {
81+
* View viewRoot = inflater.inflate(R.layout.map_frame, container, false);
82+
* FinalActivity.initInjectedView(this,viewRoot);
83+
* }
84+
* </pre>
85+
* @param sourceView
86+
*/
87+
public static void initInjectedView(Object injectedSource,View sourceView){
88+
Field[] fields = injectedSource.getClass().getDeclaredFields();
5989
if(fields!=null && fields.length>0){
6090
for(Field field : fields){
6191
ViewInject viewInject = field.getAnnotation(ViewInject.class);
6292
if(viewInject!=null){
6393
int viewId = viewInject.id();
6494
try {
6595
field.setAccessible(true);
66-
field.set(this,findViewById(viewId));
96+
field.set(injectedSource,sourceView.findViewById(viewId));
6797
} catch (Exception e) {
6898
e.printStackTrace();
6999
}
70100

71101
String clickMethod = viewInject.click();
72102
if(!TextUtils.isEmpty(clickMethod))
73-
setViewClickListener(field,clickMethod);
103+
setViewClickListener(sourceView,field,clickMethod);
74104

75105
String longClickMethod = viewInject.longClick();
76106
if(!TextUtils.isEmpty(longClickMethod))
77-
setViewLongClickListener(field,longClickMethod);
107+
setViewLongClickListener(sourceView,field,longClickMethod);
78108

79109
String itemClickMethod = viewInject.itemClick();
80110
if(!TextUtils.isEmpty(itemClickMethod))
81-
setItemClickListener(field,itemClickMethod);
111+
setItemClickListener(sourceView,field,itemClickMethod);
82112

83113
String itemLongClickMethod = viewInject.itemLongClick();
84114
if(!TextUtils.isEmpty(itemLongClickMethod))
85-
setItemLongClickListener(field,itemLongClickMethod);
115+
setItemLongClickListener(sourceView,field,itemLongClickMethod);
86116

87117
Select select = viewInject.select();
88118
if(!TextUtils.isEmpty(select.selected()))
89-
setViewSelectListener(field,select.selected(),select.noSelected());
119+
setViewSelectListener(sourceView,field,select.selected(),select.noSelected());
90120

91121
}
92122
}
93123
}
94124
}
95125

96126

97-
private void setViewClickListener(Field field,String clickMethod){
127+
private static void setViewClickListener(Object injectedSource,Field field,String clickMethod){
98128
try {
99-
Object obj = field.get(this);
129+
Object obj = field.get(injectedSource);
100130
if(obj instanceof View){
101-
((View)obj).setOnClickListener(new EventListener(this).click(clickMethod));
131+
((View)obj).setOnClickListener(new EventListener(injectedSource).click(clickMethod));
102132
}
103133
} catch (Exception e) {
104134
e.printStackTrace();
105135
}
106136
}
107137

108-
private void setViewLongClickListener(Field field,String clickMethod){
138+
private static void setViewLongClickListener(Object injectedSource,Field field,String clickMethod){
109139
try {
110-
Object obj = field.get(this);
140+
Object obj = field.get(injectedSource);
111141
if(obj instanceof View){
112-
((View)obj).setOnLongClickListener(new EventListener(this).longClick(clickMethod));
142+
((View)obj).setOnLongClickListener(new EventListener(injectedSource).longClick(clickMethod));
113143
}
114144
} catch (Exception e) {
115145
e.printStackTrace();
116146
}
117147
}
118148

119-
private void setItemClickListener(Field field,String itemClickMethod){
149+
private static void setItemClickListener(Object injectedSource,Field field,String itemClickMethod){
120150
try {
121-
Object obj = field.get(this);
151+
Object obj = field.get(injectedSource);
122152
if(obj instanceof AbsListView){
123-
((AbsListView)obj).setOnItemClickListener(new EventListener(this).itemClick(itemClickMethod));
153+
((AbsListView)obj).setOnItemClickListener(new EventListener(injectedSource).itemClick(itemClickMethod));
124154
}
125155
} catch (Exception e) {
126156
e.printStackTrace();
127157
}
128158
}
129159

130-
private void setItemLongClickListener(Field field,String itemClickMethod){
160+
private static void setItemLongClickListener(Object injectedSource,Field field,String itemClickMethod){
131161
try {
132-
Object obj = field.get(this);
162+
Object obj = field.get(injectedSource);
133163
if(obj instanceof AbsListView){
134-
((AbsListView)obj).setOnItemLongClickListener(new EventListener(this).itemLongClick(itemClickMethod));
164+
((AbsListView)obj).setOnItemLongClickListener(new EventListener(injectedSource).itemLongClick(itemClickMethod));
135165
}
136166
} catch (Exception e) {
137167
e.printStackTrace();
138168
}
139169
}
140170

141-
private void setViewSelectListener(Field field,String select,String noSelect){
171+
private static void setViewSelectListener(Object injectedSource,Field field,String select,String noSelect){
142172
try {
143-
Object obj = field.get(this);
173+
Object obj = field.get(injectedSource);
144174
if(obj instanceof View){
145-
((AbsListView)obj).setOnItemSelectedListener(new EventListener(this).select(select).noSelect(noSelect));
175+
((AbsListView)obj).setOnItemSelectedListener(new EventListener(injectedSource).select(select).noSelect(noSelect));
146176
}
147177
} catch (Exception e) {
148178
e.printStackTrace();

0 commit comments

Comments
 (0)