Android: Get Resources by Name ( getIdentifier(…); )


Get Resources by Name ( getIdentifier(…); )

สำหรับมือใหม่หัดแอนดรอย ที่เคยใช้แต่ R.drawable. imageName และกำลังกังวลกับการเก็บค่ารูปภาพต่างๆ ลงฐานข้อมูลหรือเท็กไฟล์ ว่าจะเก็บใส่เป็นค่า R.drawable id ดีหรือป่าว น่า ถ้าอย่างนั้นจะต้องเอารูปมาใส่โปรเจ็คก่อนแล้วค่อยก้อปค่า R.drawable id ไปใส่ในฐานข้อมูล แต่ก่อนผมทำอย่างนี้หละ 555+ ยุ่งซะมัดเลย วันนี้เลยมาหาฟังก์ชั่น ที่ได้ค่า id จากการเรียกผ่านชื่อ ดังนั้นหากทำได้เราก้อเก็บชื่อรูปนั้นลงฐานข้อมูลเลยก้อง่ายสุดดดดๆ และวิธีที่ได้คือ resource.getIdentifier นั้นเอง

code

class: Resource (android.content.res.Resources)
method: public int getIdentifier (String name, String defType, String defPackage)

ฟังก์ชั่นนี้ไม่ใช่ static ฟังก์ชั่นด้งนั้นต้อง มี instance ของ Resource ด้วย โดยจะได้ค่ามาจาก activity.getResource(); //activity ของหน้านั้น

ตัวอย่างโค้ด

Resources res = this.getResources();//this is Activity class

การใช้งานฟังก์ชั่น getIdentifier สามารถใช้ได้ 2 แบบ คือ ใส่พารามิเตอร์ครบ กับใส่ไม่ครบ

แบบที่ 1 getIdentifier(“ชื่อภาพ ไม่เอานามสกุล”, “โฟลเดอร์”, “ชื่อ package”)

int id = res.getIdentifier("activities_detail_2", "drawable", "demo.loadimg");

แบบที่ 2 getIdentifier(“ชื่อ package:ชื่อโฟลเดอร์/ชื่อภาพ ไม่เอานามสกุล”, null, null);

int id = res.getIdentifier("demo.loadimg:drawable/activities_detail_2", null, null);

เมื่อเราได้ id มาแล้วก้อสามารถนำไปใช้ได้เลย เช่นตัวอย่างนำไปใช้กับการโหลดรูปขึ้นมาใน ImageView

ImageView im = new ImageView(this);
im.setBackgroundResource(id);

ฟังก์ชั่น getIdentifier ไม่ใช่ใช้ได้แต่โหลดรูปเท่านั้น แต่ยังสามารถใช้กับไฟล์อื่นๆ ที่อยู่ในโฟล์เดอร์  res ได้ทั้งหมด เช่น xml, sound และ image เพื่อนๆ ก็ลองนำไปใช้ดูนะครับ

Referrence

http://developer.android.com/reference/android/content/res/Resources.html

http://www.anddev.org/tinytut_-_get_resources_by_name__getidentifier_-t460.html

adaydesign :)

 


About adaydesign

นักพัฒนาแอพพลิเคชั่นบนโมบาย [iPhone Android] คนหนึ่งซึ่งอยากจะบันทึกเรื่องราวของเส้นทางนักพัฒนาโมบายแอพพลิเคชั่นเอาไว้ในบล็อคน้อยๆ แห่งนี้ เผื่อจะแบ่งบันและแลกเปลี่ยนความรู้ให้กับคนอื่นๆ ได้บ้าง :) Mobile Application Developer; Flash Mobile, iPhone/iPad, Android Mobile Phone/Tablet and Blackberry Playbook.

Posted on มีนาคม 6, 2011, in [Dev] Android and tagged , , , , , , , , . Bookmark the permalink. ใส่ความเห็น.

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: