เว็บสำหรับสร้าง Data Access Object (DAO) จาก Json response
สำหรับผู้เน้นสบายอีกแล้วครับท่าน โยน Json เข้าไป มันจะ Generate ออกมาให้เป็น Class เลย + Getter Setter พร้อมรบ
Android Parcelable การส่งผ่านข้อมูลระหว่าง Activity แบบ Class
ในตอนแรกผมใช้ Serialize ในการส่งผ่านข้อมูลเนื่องจากง่าย แค่ implement ไปก็ใช้ได้เลย
แต่ว่าข้อเสียของมันคือทำให้ช้าเพราะ Serialize เป็นการทำ Class นั้นให้ในรูปแบบ String
แล้วโยนข้าม Activity ทั้งก้อน
คราวนี้เลยมาลองใช้ของเฉพาะสำหรับ Android กันดูบ้าง
Parcelable นั้นเท่าที่ผมลองเล่น คือการส่งแค่ Data ภายใน Class ข้าม Activity กันไปมาเท่านั้น
เช่น ฝั่ง A พอจะส่ง ก็ Write ค่าออกมา แล้วโยนข้าม Activity
พออีกฝั่งรับมาก็จะเอาจะเอาข้อมูลมา Read ลงกลับที่เดิม ดูตัวอย่างแบบง่ายๆ ที่ผมลองทำได้ที่ Url ด้านล่าง
Git hub:
https://github.com/Moomak/Demo-Parcelable-Android/tree/master/app
จากคำแนะนำของ Guru หลายคนก็บอกว่า Parcelable เร็วกว่า Serialize มาก เพราะฉะนั้นจำเป็นต้องศึกษานะครับ 🙂
แถมอีกนิด เว็บสำหรับ Generate Class ของเราให้กลายเป็น Parcelable
แก้ Library ZBarAndroidSDK 0.2 ให้ใช้ได้กับ Android Studio
เนื่องจากย้ายจาก Eclipse มาเป็น Android Studio เลยต้องทำการ Library นี้มา
ซึ่งปกติใช้ compile fileTree(dir: ‘libs’, include: [‘*.jar’]) อยู่แล้ว แต่คราวนี้ปรากฎว่ามันไม่ Import iconv.so มาให้ด้วย เพราะว่าเป็น folder และ ตามด้วย *.so
หาข้อมูลในเน็ตก็มีวิธีการเพิ่มส่วน Compile ลงไปใน gradle ซึ่งผมไปเจอวิธีที่ง่ายกว่านั้นคือ
1. สร้าง folder ชื่อ lib ขึ้นมาก่อน (ที่ไหนก็ได้ แค่เอาไว้วางไฟล์)
2. โยน folder armeabi (ที่มี iconv.so ในนั้น) เข้าไปใน folder lib
3. อัด zip folder lib แล้วเปลี่ยนชื่อเป็น armeabi.jar
4. โยน jar ตัวนี้เข้าไปใน folder libs ของ Android Studio
เท่านี้ก็เป็นการ Hack เพื่อ import so แบบง่ายๆ แล้ว
ทำกับตัวอื่นแบบกันให้ครบ armeabi-v7a, x86 ใช้ชื่อ jar ตามชื่อ folder ได้เลย แล้ว Copy ลง libs ให้หมด
เท่านี้ตัว ZBar ก็สามารถทำงานได้ตามปกติ โดยไม่ต้องไปแก้ Gradle เลย
คำเตือน ขั้นตอนที่ 1. ต้องใช้ชื่อเป็น lib เท่านั้น ไม่เช่นนั้นจะไม่สามารถ import *.so เข้าไปได้
สรุป: compress zip => lib/armeabi/[iconv.so],[libzbarjni.so] + rename to armeabi.jar
lib/armeabi-v7a/[iconv.so],[libzbarjni.so] + rename to armeabi-v7a.jar
lib/x86/[iconv.so],[libzbarjni.so] + rename to x86.jar