Skip to content

Commit 4c80ffd

Browse files
fix bug when save array list, add test activity.
1 parent dfeabb6 commit 4c80ffd

14 files changed

Lines changed: 348 additions & 123 deletions

File tree

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ intent.putExtra("description", "Android bundle data auto access.");
4040
startActivity(intent);
4141
```
4242
经过以上配置之后,DataAutoAccess会自动从intent中取出数据,给name和description变量赋值,而且当activity由于系统内存不足将要被杀死时,也会自动保存变量值,在onCreate时取出进行赋值。
43-
43+
###Supported field type
44+
All type which bundle supported:
45+
String, int, boolean, double, float, long, byte, char, short, Parcelable, Serializable, Bundle, CharSequence,ArrayList<String>, ArrayList<Integer>, ArrayList<Parcelable>, ArrayList<CharSequence>, String[], int[], boolean[], double[], float[], long[], byte[], char[], short[], ParcelableBean[], CharSequenceBean[].
4446

4547
##Download
4648
Configure your project-level build.gradle to include the 'android-apt' plugin:
@@ -63,8 +65,8 @@ Then, apply the 'android-apt' plugin in your module-level build.gradle and add t
6365
}
6466

6567
dependencies {
66-
compile 'com.thirtydegreesray:dataautoaccess:1.2.2'
67-
apt 'com.thirtydegreesray:dataautoaccess-compiler:1.2.2'
68+
compile 'com.thirtydegreesray:dataautoaccess:1.2.3'
69+
apt 'com.thirtydegreesray:dataautoaccess-compiler:1.2.3'
6870
}
6971

7072
##Proguard

dataautoaccess-compiler/src/main/java/com/thirtydegreesray/dataautoaccess/compiler/AutoAccessClass.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,16 @@ private void generateSaveDataCode(StringBuilder java){
8080
for(FieldAutoAccess field : fields){
8181
String putPreCode = DataAutoAccessProcessor.PUT_DATA_PRE_CODE_MAP.get(field.getFieldType());
8282
//type ArrayList
83-
if(putPreCode.equals("")){
84-
java.append("\t").append("DataAutoAccess.saveArrayList(")
85-
.append("\"").append(field.getFiledKey()).append("\"").append(", ")
86-
.append("target.").append(field.getFieldName()).append(", ")
87-
.append("dataStore").append(");\n");
88-
}else{
83+
// if(putPreCode.equals("")){
84+
// java.append("\t").append("DataAutoAccess.saveArrayList(")
85+
// .append("\"").append(field.getFiledKey()).append("\"").append(", ")
86+
// .append("target.").append(field.getFieldName()).append(", ")
87+
// .append("dataStore").append(");\n");
88+
// }else{
8989
java.append("\t").append("dataStore.").append(putPreCode)
9090
.append("(").append("\"").append(field.getFiledKey()).append("\"").append(", ")
9191
.append("target.").append(field.getFieldName()).append(");\n");
92-
}
92+
// }
9393
}
9494
java.append("}\n");
9595
}

dataautoaccess-compiler/src/main/java/com/thirtydegreesray/dataautoaccess/compiler/DataAutoAccessProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public class DataAutoAccessProcessor extends AbstractProcessor {
5959
static final List<String> PUT_DATA_PRE_CODE = Arrays.asList(
6060
"putString", "putInt", "putBoolean", "putDouble", "putFloat", "putLong",
6161
"putByte", "putChar", "putShort", "putParcelable", "putSerializable", "putBundle", "putCharSequence",
62-
"",
62+
"putSerializable",
6363
"putStringArray", "putIntArray", "putBooleanArray", "putDoubleArray", "putFloatArray", "putLongArray",
6464
"putByteArray", "putCharArray", "putShortArray", "putParcelableArray", "putCharSequenceArray"
6565
);

dataautoaccess/src/main/java/com/thirtydegreesray/dataautoaccess/DataAutoAccess.java

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
/**
1212
* Data auto access<br>
1313
* Android bundle data auto access.<br>
14-
*USE<br>
14+
* USE<br>
1515
* <pre><code>
1616
* public class ExampleActivity extends Activity {
1717
* {@literal @}AutoAccess String name;
@@ -39,14 +39,14 @@
3939
* }
4040
* }
4141
* </code></pre>
42-
*
42+
* <p>
4343
* <pre><code>
4444
* Intent intent = new Intent(this, ExampleActivity.class);
4545
* intent.putExtra("name", "DataAutoAccess");
4646
* intent.putExtra("description", "Android bundle data auto access.");
4747
* startActivity(intent);
4848
* </code></pre>
49-
*
49+
* <p>
5050
* Created by ThirtyDegreesRay on 2016/9/6 09:35
5151
*/
5252
public class DataAutoAccess {
@@ -57,50 +57,52 @@ public class DataAutoAccess {
5757

5858
/**
5959
* get data from bundle
60+
*
6061
* @param targetObject the object need to save data
61-
* @param dataStore the bundle to get data
62+
* @param dataStore the bundle to get data
6263
*/
63-
public static void getData(Object targetObject, Bundle dataStore){
64-
if(targetObject == null || dataStore == null){
64+
public static void getData(Object targetObject, Bundle dataStore) {
65+
if (targetObject == null || dataStore == null) {
6566
return;
6667
}
6768

6869
DataAccessor<Object> dataAccessor = getDataAccessor(targetObject, dataStore);
69-
if(dataAccessor != null) {
70+
if (dataAccessor != null) {
7071
dataAccessor.getData(targetObject, dataStore);
7172
}
7273
}
7374

7475
/**
7576
* save data to bundle
77+
*
7678
* @param targetObject the object need to save data
77-
* @param dataStore the bundle to save data
79+
* @param dataStore the bundle to save data
7880
*/
79-
public static void saveData(Object targetObject, Bundle dataStore){
80-
if(targetObject == null || dataStore == null){
81+
public static void saveData(Object targetObject, Bundle dataStore) {
82+
if (targetObject == null || dataStore == null) {
8183
return;
8284
}
8385

8486
DataAccessor<Object> dataAccessor = getDataAccessor(targetObject, dataStore);
85-
if(dataAccessor != null) {
87+
if (dataAccessor != null) {
8688
dataAccessor.saveData(targetObject, dataStore);
8789
}
8890
}
8991

90-
private static DataAccessor<Object> getDataAccessor(Object targetObject, Bundle dataStore){
92+
private static DataAccessor<Object> getDataAccessor(Object targetObject, Bundle dataStore) {
9193
Class<?> targetClass = targetObject.getClass();
9294
String className = targetClass.getName() + SUFFIX;
9395
return getDataAccessor(className);
9496
}
9597

96-
private static DataAccessor<Object> getDataAccessor(String className){
97-
if(!dataAccessorMap.containsKey(className)){
98+
private static DataAccessor<Object> getDataAccessor(String className) {
99+
if (!dataAccessorMap.containsKey(className)) {
98100
try {
99101
Class<?> dataAccessorClass = Class.forName(className);
100102
DataAccessor<Object> dataAccessor = (DataAccessor<Object>) dataAccessorClass.newInstance();
101103
dataAccessorMap.put(className, dataAccessor);
102104
} catch (ClassNotFoundException e) {
103-
e.printStackTrace();
105+
// e.printStackTrace();
104106
} catch (InstantiationException e) {
105107
e.printStackTrace();
106108
} catch (IllegalAccessException e) {
@@ -110,33 +112,45 @@ private static DataAccessor<Object> getDataAccessor(String className){
110112
return dataAccessorMap.get(className);
111113
}
112114

113-
/** DO NOT USE: Exposed for generated code. */
115+
/**
116+
* DO NOT USE: Exposed for generated code.
117+
*/
114118
public interface DataAccessor<T> {
115119
void getData(T target, Bundle dataStore);
120+
116121
void saveData(T target, Bundle dataStore);
117122
}
118123

119-
/** Exposed for generated code. */
120-
public static <T extends Object> T getCastData(String key, Bundle dataStore){
124+
/**
125+
* Exposed for generated code.
126+
*/
127+
public static <T extends Object> T getCastData(String key, Bundle dataStore) {
128+
if (!dataStore.containsKey(key)) {
129+
return null;
130+
}
121131
return (T) dataStore.get(key);
122132
}
123133

124-
/** Exposed for generated code. */
125-
public static void saveArrayList(String key, ArrayList list, Bundle dataStore){
126-
if(list == null){
127-
return ;
134+
/**
135+
* Exposed for generated code.
136+
*/
137+
public static void saveArrayList(String key, ArrayList list, Bundle dataStore) {
138+
if (list == null) {
139+
return;
128140
}
129141
Object[] listArray = list.toArray();
130-
if(listArray instanceof String[]){
142+
if (listArray instanceof String[]) {
131143
dataStore.putStringArrayList(key, list);
132-
}else if(listArray instanceof Integer[]){
144+
} else if (listArray instanceof Integer[]) {
133145
dataStore.putIntegerArrayList(key, list);
134-
}else if(listArray instanceof Parcelable[]){
146+
} else if (listArray instanceof Parcelable[]) {
135147
dataStore.putParcelableArrayList(key, list);
136-
}else if(listArray instanceof CharSequence[]){
148+
} else if (listArray instanceof CharSequence[]) {
137149
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
138150
dataStore.putCharSequenceArrayList(key, list);
139151
}
152+
} else {
153+
throw new NullPointerException("");
140154
}
141155
}
142156

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ org.gradle.jvmargs=-Xmx1536m
1616
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
1717
# org.gradle.parallel=true
1818

19-
VERSION_NAME = 1.2.2
20-
VERSION_CODE = 12
19+
VERSION_NAME = 1.2.3
20+
VERSION_CODE = 13
2121

sample/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
</intent-filter>
1313
</activity>
1414
<activity android:name=".ExampleActivity" />
15+
<activity android:name=".test.TestActivity"/>
1516
</application>
1617

1718
</manifest>

sample/src/main/java/com/thirtydegreesray/dataautoaccess/sample/ExampleActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class ExampleActivity extends BaseActivity {
2525
@Override
2626
protected void onCreate(@Nullable Bundle savedInstanceState) {
2727
super.onCreate(savedInstanceState);
28-
setContentView(R.layout.activity_test);
28+
setContentView(R.layout.activity_example);
2929

3030
tvName = (TextView) findViewById(R.id.tv_name);
3131
tvDescription = (TextView) findViewById(R.id.tv_description);

sample/src/main/java/com/thirtydegreesray/dataautoaccess/sample/MainActivity.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import android.os.Bundle;
55
import android.view.View;
66

7+
import com.thirtydegreesray.dataautoaccess.sample.test.TestActivity;
8+
79
/**
810
* Created by ThirtyDegreesRay on 2016/9/1 09:58
911
*/
@@ -21,4 +23,9 @@ public void onDataAutoAccessClick(View view){
2123
intent.putExtra("description", "Android bundle data auto access.");
2224
startActivity(intent);
2325
}
26+
27+
public void onTestClick(View view){
28+
Intent intent = new Intent(this, TestActivity.class);
29+
startActivity(intent);
30+
}
2431
}

sample/src/main/java/com/thirtydegreesray/dataautoaccess/sample/TestClass.java

Lines changed: 0 additions & 48 deletions
This file was deleted.
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.thirtydegreesray.dataautoaccess.sample.test;
2+
3+
import android.os.Parcel;
4+
import android.os.Parcelable;
5+
6+
/**
7+
* Created by ThirtyDegreesRay on 2016/9/12 11:04
8+
*/
9+
10+
public class ParcelableBean implements Parcelable{
11+
12+
int size ;
13+
String name ;
14+
15+
protected ParcelableBean(Parcel in) {
16+
size = in.readInt();
17+
name = in.readString();
18+
}
19+
20+
public ParcelableBean(){
21+
22+
}
23+
24+
public ParcelableBean initData(){
25+
size = 2;
26+
name = "ParcelableClass";
27+
return this;
28+
}
29+
30+
public static final Creator<ParcelableBean> CREATOR = new Creator<ParcelableBean>() {
31+
@Override
32+
public ParcelableBean createFromParcel(Parcel in) {
33+
return new ParcelableBean(in);
34+
}
35+
36+
@Override
37+
public ParcelableBean[] newArray(int size) {
38+
return new ParcelableBean[size];
39+
}
40+
};
41+
42+
@Override
43+
public int describeContents() {
44+
return 0;
45+
}
46+
47+
@Override
48+
public void writeToParcel(Parcel dest, int flags) {
49+
dest.writeInt(size);
50+
dest.writeString(name);
51+
}
52+
53+
@Override
54+
public boolean equals(Object obj) {
55+
if(!(obj instanceof ParcelableBean)){
56+
return false;
57+
}
58+
ParcelableBean parcelableBean = (ParcelableBean) obj;
59+
if(size != parcelableBean.size){
60+
return false;
61+
}
62+
return name.equals(parcelableBean.name);
63+
}
64+
}

0 commit comments

Comments
 (0)