2015-10-26 12 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: 'पूर्णांक android.graphics.Bitmap.getWidth()' आभासी विधि आह्वान करने के लिए

.. मैं error नीचे की तरह हो रही है प्रयास

java.lang.NullPointerException: Com.adapter.CategoryAdapter.getBitmap (CategoryAdapter.java:92) पर com.adapter.CategoryAdapter.getView (Category एडाप्टर) पर एक शून्य ऑब्जेक्ट संदर्भ पर वर्चुअल विधि 'int android.graphics.Bitmap.getWidth()' को आमंत्रित करने का प्रयास करें। .जावा: 75) android.widget.AbsListView.obtainView (AbsListView.java:2896) android.widget.GridView.makeAndAddView (GridView.java:1456) पर android.widget.GridView.makeRow पर (GridView.java:361) पर पर android.widget.GridView.fillDown (GridView.java:302) android.widget.GridView.fillFromTop (GridView.java:437) atroid.widget.GridView.layoutChildren (GridView.java:1284) एंड्रॉइड पर। widget.AbsListView.onLayout (AbsListView.java:2700) android.view.View.layout (View.java:16899) ​​ atroid.view.ViewGroup.layout (ViewGroup.java:52405) atroid.widget पर। RelativeLayout.onLayout (RelativeLayout.java:1077) atroid.view.View.layout (View.j पर ava: 16899) ​​ atroid.view.ViewGroup.layout (ViewGroup.java:52405) atroid.widget.FrameLayout.layoutChildren (FrameLayout.java:5279) atroid.widget.FrameLayout.onLayout (FrameLayout.java: 514) atroid.view.View.layout (View.java:16899) ​​ atroid.view.ViewGroup.layout (ViewGroup.java:52405) atroid.support.v4.widget.DrawerLayout.onLayout (DrawerLayout) पर। जावा: 1043) atroid.view.View.layout (View.java:16899) ​​ atroid.view.ViewGroup.layout (ViewGroup.java:52405) atroid.widget.LinearLayout.setChildFrame (LinearLayout.java: 1702) atroid.widget.LinearLayout.layout वर्टिकल (LinearLayout.java:1556) एंड्रॉइड पर .widget.LinearLayout.onLayout (LinearLayout.java:1465) atroid.view.View.layout (View.java:16899) ​​ atroid.view.ViewGroup.layout (ViewGroup.java:52405) atroid.widget पर .elativeLayout.onLayout (RelativeLayout.java:1077) atroid.view.View.layout (View.java:16899) ​​ atroid.view.ViewGroup.layout (ViewGroup.java:52405) atroid.widget.FrameLayout पर .layoutChildren (FrameLayout.java:5279) android.widget.FrameLayout.onLayout (FrameLayout.javaoci14) atroid.view.View.layout (View.java:16899) ​​ atroid.view.ViewGroup.layout पर (ViewGroup.java:52405) atroid.widget.LinearLayout.setChildFrame (LinearLayout.java:1702) android.widget.LinearLayout.layoutVertical (LinearLayout.java:1556) atroid.widget.LinearLayout.onLayout (LinearLayout.java:1465) atroid.view.View.layout (View.java:16899) ​​ एंड्रॉइड पर .view.ViewGroup.layout (ViewGroup.java:52405) android.widget.FrameLayout.layoutChildren (FrameLayout.java:5279) atroid.widget.FrameLayout.onLayout (FrameLayout.java:5214) atroid.view पर .View.layout (View.java:16899) ​​ atroid.view.ViewGroup.layout (ViewGroup.java:52405) atroid.widget.LinearLayout.setChildFrame (LinearLayout.java:1702) atroid.widget.LinearLayout पर .layoutVertical (LinearLayout.java:1556) android.widget.LinearLayout पर।onLayout (LinearLayout.java:1465) atroid.view.View.layout (View.java:16899) ​​ atroid.view.ViewGroup.layout (ViewGroup.java:52405) atroid.widget.FrameLayout.layoutChildren (FrameLayout.java:5279) atroid.widget.FrameLayout.onLayout (FrameLayout.javaoci14) atroid.view.View.layout (View.java:16899) ​​ atroid.view.ViewGroup.layout (ViewGroup। जावा: 5405)

मैं इसे कैसे हल कर सकता हूं?

+0

आपकी बिटमैप निर्माण विफल हो रही है। क्या आप सुनिश्चित हैं कि 'पथ' मान सही है और वास्तविक बिटमैप को इंगित करता है? –

+0

फिर से Getmitmap विधि की जांच करें, आप वहां शून्य सूचक प्राप्त कर रहे हैं। –

उत्तर

4

त्रुटि निशान

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

पर कि त्रुटि occours दिखाने 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) 

इस विधि अशक्त वापस आ जाएगी, छवि डेटा डीकोड नहीं किया जा सकता है। इस विधि को जानने के लिए E/BitmapFactory: Unable to decode stream: ... जैसे नोट लॉग इन क्यों विफल रहे। शायद आपने गलत रास्ता दिया है।

0

मेरे मामले में समस्या यह थी कि मैं बैकग्राउंड थ्रेड में 'डीकोडफाइल' कह रहा था जो शून्य लौट रहा था। उस कोड को मुख्य थ्रेड पर ले जाने से समस्या ठीक हो गई।

संबंधित मुद्दे