|
|
|
Android - สอบถามเรื่อง การทำให้ Listview ที่รับ Json Url มาอ่ะครับ คือมัน หน่วง ไม่ไหลลื่นเลย |
|
|
|
|
|
|
|
- LayoutInflater น่าจะประกาศเป็น member แล้วใช้วิธี ประกาศ Constructor รับ context กับ data ไม่รู้ว่าเป็น array, ArrayList หรือ HashMap แทนที่จะสร้างใหม่ทุกครั้งที่ getView
- ส่วน ImageView ตั้งค่า width, height scaleType ใน xml ไปเลยไม่ดีกว่าหรอครับ
- แล้วก็ส่วนฟังค์ชั่น loadBitmap น่าจะมีผลอยู่เหมือนกัน ไม่ทราบว่าใช้วิธีไหนอะครับ ลองหาพวก library ที่ cache พวกรูปภาพ หรือว่าเพิ่ม Perfomance ดีกว่าเขียนเองครับ
เช่นพวก Universal Image Loader, Picasso, Volley หรือ ion (https://github.com/koush/ion)
นี่ตัวอ่ย่างที่แก้ครับ ไม่รู้ว่าดีขึ้นไหม
Code (Android-Java)
public class CustomListView extends BaseAdapter {
LayoutInflater mInflater;
HashMap<K, V> myArr;
public CustomListView(Context context, HashMap<K, V> MyArr) {
mInflater = LayoutInflater.from(context);
this.myArr = myArr;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder = new Holder();
if (convertView == null) {
convertView = mInflater.inflate(R.layout.app_custom_list, null);
holder = new Holder();
holder.imageView = (ImageView) convertView.findViewById(R.id.ColImgPath);
holder.txtPicName = (TextView) convertView.findViewById(R.id.ColTitle);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
HashMap<String, String> entry = MyArr.get(position);
try {
holder.imageView.setImageBitmap
(loadBitmap(MyArr.get(position).get("store_image")));
} catch (Exception e) {
// When Error
holder.imageView.setImageResource(android.R.drawable.ic_menu_report_image);
}
// ColPicname
holder.txtPicName.setPadding(50, 0, 0, 0);
holder.txtPicName.setText("ชื่อร้าน : " + MyArr.get(position).get("store_name"));
return convertView;
}
}
|
ประวัติการแก้ไข 2014-03-31 13:10:47
|
|
|
|
Date :
2014-03-31 13:09:20 |
By :
devahoy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|