300x250 AD TOP

Tìm kiếm Blog này

Thứ Hai, 30 tháng 6, 2014

Tag:

Tối ưu code trong ListView (Hiển thị lên màn hình) - Buổi 3

Như buổi 2 mình đã viết hiển thị ContactList để cho các bạn hiểu nhưng chưa được tối ưu ! đoạn code sau đây sẽ tối ưu vần ConvertView cho các bạn !
Giúp cho các bạn hiển thị tốt trên màn hình điện thoại không tốn bộ nhớ ram chạy mượt hơn !

Đoạn code buổi 2 để cho các bạn tiện so sánh !

  1.    @Override
            public View getView(final int hailamit, View convertview, ViewGroup arg2) {
                // ở Hàm getView đã support convertview rồi nhưng mình chưa sử dụng 
                LayoutInflater inflater = getLayoutInflater();
                //Bơm layout vao cai View mình tao ở dưới
                View contactitemview = inflater.inflate(R.layout.contact_list_item, null);
               
                TextView textname = (TextView) contactitemview.findViewById(R.id.txtName);
                textname.setText(dataName[hailamit]);
               
                TextView textnumber = (TextView) contactitemview.findViewById(R.id.txtNumber);
                textnumber.setText(dataNumber[hailamit]);
               
                ImageView textphoto = (ImageView) contactitemview.findViewById(R.id.imvContact);
                textphoto.setImageResource(dataPhoto[hailamit]);
               
               
                textname.setOnClickListener(new OnClickListener() {
                   
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(ContactList.this, ContactDetailActivity.class);
                       
                        Bundle extras = new Bundle();
                       
                        extras.putString(CommonKeys.CONCTACT_NAME, dataName[hailamit]);
                        extras.putString(CommonKeys.CONCTACT_NUMBER, dataNumber[hailamit]);
                        extras.putLong(CommonKeys.CONCTACT_PHOTO, dataPhoto[hailamit]);
                       
                        intent.putExtras(extras);
                       
                       
                        startActivity(intent);
                    }
                });
                return contactitemview;
            }
           
        }
Bây giờ mình sử dụng phần ConvertView để mình tối ưu đoạn code này !


  1.      @Override
            public View getView(final int hailamit, View convertview, ViewGroup arg2) {
               
                LayoutInflater inflater = getLayoutInflater();
                ViewHolder holder;
                if(convertview == null){
                    Log.d("Demo", hailamit + "");
                    convertview = inflater.inflate(R.layout.contact_list_item, null);
                    holder = new ViewHolder();
                    holder.imvContact= (ImageView) convertview.findViewById(R.id.imvContact);
                    holder.txtName = (TextView) convertview.findViewById(R.id.txtName);
                    holder.txtNumber = (TextView) convertview.findViewById(R.id.txtNumber);
                    convertview.setTag(holder);
                }else {
                    holder = (ViewHolder) convertview.getTag();
                }
                //Bơm layout vao cai View mình tao ở dưới
                holder.txtName.setText(dataName[hailamit]);
                holder.txtNumber.setText(dataNumber[hailamit]);
                holder.imvContact.setImageResource(dataPhoto[hailamit]);
                convertview .setOnClickListener(new OnClickListener() {
                   
                    @Override
                    public void onClick(View v) {
                        Intent intent = new Intent(ContactList.this, ContactDetailActivity.class);
                        Bundle extras = new Bundle();
                        extras.putString(CommonKeys.CONCTACT_NAME, dataName[hailamit]);
                        extras.putString(CommonKeys.CONCTACT_NUMBER, dataNumber[hailamit]);
                        extras.putLong(CommonKeys.CONCTACT_PHOTO, dataPhoto[hailamit]);
                        intent.putExtras(extras);
                        startActivity(intent);
                    }
                });
                return convertview ;
            }
           
        }
  2.  // Tạo thêm một class ViewHolder
        private static class ViewHolder{
            public ImageView imvContact;
            public TextView txtName;
            public TextView txtNumber;
           
        }

0 nhận xét:

Đăng nhận xét