2015-10-26 21 views
5
public class CategoryAdapter extends BaseAdapter { 
Context context; 
ArrayList<ModelCategory> model; 
LayoutInflater layoutInflater; 

public CategoryAdapter(Activity activity, ArrayList<ModelCategory> model) { 
    this.model = model; 
    this.context = activity; 
} 

@Override 
public int getCount() { 
    return model.size(); 
} 

@Override 
public Object getItem(int position) { 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    ViewHolder viewHolder = null; 
    layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) { 
     viewHolder = new ViewHolder(); 
     convertView = layoutInflater.inflate(R.layout.category_adapter, parent, false); 
     viewHolder.imageView = (ImageView) convertView.findViewById(R.id.category_grid_image); 
     viewHolder.textView = (TextView) convertView.findViewById(R.id.get_category_title); 
     convertView.setTag(viewHolder); 

    } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
    } 

    viewHolder.textView.setText(model.get(position).getCategoryName()); 
    if(position<=3){ 
     viewHolder.imageView.setImageBitmap(StringToBitMap(model.get(position).getCategoryImage())); 
    } 
    else { 
     viewHolder.imageView.setImageBitmap(getBitmap(model.get(position).getCategoryImage())); 
    } 
    return convertView; 
} 

private class ViewHolder { 
    public ImageView imageView; 
    public TextView textView; 
} 

private Bitmap getBitmap(String path) { 

    BitmapFactory.Options option = new BitmapFactory.Options(); 
    option.inSampleSize = 8; 
    Bitmap bitmap = BitmapFactory.decodeFile(path, option); 
    Matrix matrix = new Matrix(); 
    matrix.postRotate(getImageOrientation(path)); 
    Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); 
    Bitmap resized = Bitmap.createScaledBitmap(rotatedBitmap, 150, 150, true); 
    return resized; 
} 


private static int getImageOrientation(String imagePath) { 
    int rotate = 0; 
    try { 
     File imageFile = new File(imagePath); 
     ExifInterface exif = new ExifInterface(
       imageFile.getAbsolutePath()); 
     int orientation = exif.getAttributeInt(
       ExifInterface.TAG_ORIENTATION, 
       ExifInterface.ORIENTATION_NORMAL); 

     switch (orientation) { 
      case ExifInterface.ORIENTATION_ROTATE_270: 
       rotate = 270; 
       break; 
      case ExifInterface.ORIENTATION_ROTATE_180: 
       rotate = 180; 
       break; 
      case ExifInterface.ORIENTATION_ROTATE_90: 
       rotate = 90; 
       break; 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return rotate; 
} 


public Bitmap StringToBitMap(String encodedString){ 
    try { 
     byte [] encodeByte=Base64.decode(encodedString, Base64.DEFAULT); 
     Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length); 
     return bitmap; 
    } catch(Exception e) { 
     e.getMessage(); 
     return null; 
    } 
} 

}NullPointerException: Cố gắng để gọi phương thức ảo 'int android.graphics.Bitmap.getWidth()'

Tôi nhận error như dưới đây ..

java.lang.NullPointerException: Cố gắng gọi phương thức ảo 'int android.graphics.Bitmap.getWidth()' trên tham chiếu đối tượng null tại com.adapter.CategoryAdapter.getBitmap (CategoryAdapter.java:92) tại com.adapter.CategoryAdapter.getView (CategoryAdapter .java: 75) tại android.widget.AbsListView.obtainView (AbsListView.java:2896) tại android.widget.GridView.makeAndAddView (GridView.java:1456) tại android.widget.GridView.makeRow (GridView.java:361) tại android.widget.GridView.fillDown (GridView.java:302) tại android.widget.GridView.fillFromTop (GridView.java:437) tại android.widget.GridView.layoutChildren (GridView.java:1284) tại android. widget.AbsListView.onLayout (AbsListView.java:2700) tại android.view.View.layout (View.java:16899) ​​ tại android.view.ViewGroup.layout (ViewGroup.java WEBC405) tại android.widget. RelativeLayout.onLayout (RelativeLayout.java:1077) tại android.view.View.layout (View.j ava: 16899) ​​ tại android.view.ViewGroup.layout (ViewGroup.java WEBC405) tại android.widget.FrameLayout.layoutChildren (FrameLayout.java:579) tại android.widget.FrameLayout.onLayout (FrameLayout.java: 514) tại android.view.View.layout (View.java:16899) ​​ tại android.view.ViewGroup.layout (ViewGroup.java WEBC405) tại android.support.v4.widget.DrawerLayout.onLayout (DrawerLayout. java: 1043) tại android.view.View.layout (View.java:16899) ​​ tại android.view.ViewGroup.layout (ViewGroup.java WEBC405) tại android.widget.LinearLayout.setChildFrame (LinearLayout.java: 1702) tại android.widget.LinearLayout.layoutVertical (LinearLayout.java:1556) tại android .widget.LinearLayout.onLayout (LinearLayout.java:1465) tại android.view.View.layout (View.java:16899) ​​ tại android.view.ViewGroup.layout (ViewGroup.java WEBC405) tại android.widget .RelativeLayout.onLayout (RelativeLayout.java:1077) tại android.view.View.layout (View.java:16899) ​​ tại android.view.ViewGroup.layout (ViewGroup.java WEBC405) tại android.widget.FrameLayout .layoutChildren (FrameLayout.java WEBC79) tại android.widget.FrameLayout.onLayout (FrameLayout.java WEBC14) tại android.view.View.layout (View.java:16899) ​​ tại android.view.ViewGroup.layout (ViewGroup.java WEBC405) tại android.widget.LinearLayout.setChildFrame (LinearLayout.java:1702) tại android.widget.LinearLayout.layoutVertical (LinearLayout.java:1556) tại android.widget.LinearLayout.onLayout (LinearLayout.java:1465) tại android.view.View.layout (View.java:16899) ​​ tại android .view.ViewGroup.layout (ViewGroup.java WEBC405) tại android.widget.FrameLayout.layoutChildren (FrameLayout.java:579) tại android.widget.FrameLayout.onLayout (FrameLayout.java WEBC14) tại android.view .View.layout (View.java:16899) ​​ tại android.view.ViewGroup.layout (ViewGroup.java WEBC405) tại android.widget.LinearLayout.setChildFrame (LinearLayout.java:1702) tại android.widget.LinearLayout .layoutVertical (LinearLayout.java:1556) tại android.widget.LinearLayout.onLayout (LinearLayout.java:1465) tại android.view.View.layout (View.java:16899) ​​ tại android.view.ViewGroup.layout (ViewGroup.java WEBC405) tại android.widget.FrameLayout.layoutChildren (FrameLayout.java WEBC79) tại android.widget.FrameLayout.onLayout (FrameLayout.java WEBC14) tại android.view.View.layout (View.java:16899) ​​ tại android.view.ViewGroup.layout (ViewGroup. java: 5405)

Làm cách nào để giải quyết vấn đề này?

+0

Tạo bitmap của bạn dường như không thành công. Bạn có chắc chắn giá trị 'đường dẫn' là chính xác và trỏ đến một bitmap thực? –

+0

Kiểm tra lại phương thức getBitmap, bạn sẽ nhận được con trỏ null. –

Trả lời

4

dấu vết Lỗi cho thấy occours lỗi trên

Bitmap bitmap = BitmapFactory.decodeFile(path, option); 
Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); 

Như các tài liệu của phương pháp public static Bitmap decodeFile(String pathName, Options opts):

return The decoded bitmap, or null if the image data could not be 
decoded, or, if opts is non-null, if opts requested only the 
size be returned (in opts.outWidth and opts.outHeight) 

Phương pháp này sẽ trả về null, nếu các dữ liệu hình ảnh không thể được giải mã. Lưu ý nhật ký như E/BitmapFactory: Unable to decode stream: ... để tìm hiểu phương pháp này tại sao không thành công. Có lẽ bạn đã cung cấp một con đường sai lầm.

0

Sự cố trong trường hợp của tôi là tôi đã gọi 'decodeFile' trong chuỗi nền đã trả về giá trị rỗng. Di chuyển mã đó đến chủ đề chính đã khắc phục được sự cố.

Các vấn đề liên quan

 Các vấn đề liên quan