Android Studio : How to get xml Strings within a BaseAdapter
วันนี้เราจะมาพูดถึงการเรียกใช้ตัวแปรใน XML Strings โดยเรียกจาก public class แบบ BaseAdapter ซึ่งปกติจะไม่สามารถเรียกใช้ตัวแปรจาก XML Strings ตรงๆได้
แต่เรามีวิธีเรียกใช้อ้อมนิดนึง โดยการเพิ่ม Context parameter ใน public class แล้วส่งค่าเข้ามาจาก Activity ที่เรียกใช้ class BaseAdapter ก่อน จากนั้นค่อยใช้ Context ที่ส่งเข้ามาเรียกตัวแปรใน XML Strings อีกที ดังตัวอย่าง
Original | public class TestAdapter extends BaseAdapter { …public TestAdapter(int imgsize) { this.imagesize=imgsize; } } |
New | public class TestAdapter extends BaseAdapter { … // add context variable private Context context; // add context variable in public public TestAdapter(int imgsize,Context c) { // get context value this.context=c; this.imagesize=imgsize; } } |
จากนั้นไปยัง Activity ที่มีการเรียกใช้ BaseAdapter ดังตัวอย่าง
Original | myadapter=new TestAdapter(imgSize); |
New | myadapter=new TestAdapter(imgSize,this.getContext()); |
คราวนี้กลับไปที่ class BaseAdapter เราจะเรียกใช้ตัวแปรจาก XML Strings ยังไง
public class TestAdapter extends BaseAdapter { … private Context context; public TestAdapter(int imgsize,Context c) this.imagesize=imgsize; @Override String ImgName=context.getResources().getString(R.string.imgname); … } |
คราวนี้เราก็สามารถเรียกใช้ตัวแปรใน XML ได้ละ