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?
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? –
Kiểm tra lại phương thức getBitmap, bạn sẽ nhận được con trỏ null. –