2011-06-13 29 views
0

我希望把位图图像的ListView,将图象到listarray从资产文件夹

我用这个方法:

public Drawable getAssetImage(Context context, String filename) throws IOException { 
    AssetManager assets = getAssets(); 
    InputStream buffer = new BufferedInputStream((assets.open("flags/" + filename + ".png"))); 
    Bitmap bitmap = BitmapFactory.decodeStream(buffer); 
    return new BitmapDrawable(bitmap); 
} 

,然后,我投入的HashMap:

temp.put("Icon", getAssetImage(this, "Cyprus")); 

我有我的资产/标志图标

这里我们有错误日志:

06-13 12:39:12.236: ERROR/AndroidRuntime(10934): FATAL EXCEPTION: main 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934): java.lang.NullPointerException 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at android.content.ContextWrapper.getResources(ContextWrapper.java:80) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at com.project.castroll.DataBaseHelper.getAssetImage(DataBaseHelper.java:111) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at com.project.castroll.DataBaseHelper.selectAll(DataBaseHelper.java:96) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at com.project.castroll.CastrollApp.showKwalifikacja(CastrollApp.java:282) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at com.project.castroll.CastrollApp$2.onClick(CastrollApp.java:255) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at android.view.View.performClick(View.java:2485) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at android.view.View$PerformClick.run(View.java:9080) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at android.os.Handler.handleCallback(Handler.java:587) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at android.os.Handler.dispatchMessage(Handler.java:92) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at android.os.Looper.loop(Looper.java:123) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at java.lang.reflect.Method.invoke(Method.java:507) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
06-13 12:39:12.236: ERROR/AndroidRuntime(10934):  at dalvik.system.NativeStart.main(Native Method) 
+0

CZYmożeszMySimpleAdapter (简体中文)简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文简体中文如果你的应用程序没有使用setViewImage(android.widget.ImageView v,java.lang.String s){v.setImageDrawable() Drawable.createFromStream(getAssets()。open(“flags /”+ s +“.png”),null));}}奇数/偶数行的' – Selvin 2011-06-13 13:52:00

回答

1

不存储可绘制在HashMap中使用你自己的实现SimpleAdapter像这样 (如 “图标”,在HashMap中只放文件名)

public class MySimpleAdapter extends SimpleAdapter{ 

     Context localcontext = null; 

     public MySimpleAdapter(Context context, 
       List<? extends Map<String, ?>> data, int resource, 
       String[] from, int[] to) { 
      super(context, data, resource, from, to); 
      localcontext = context; 
     } 

     @Override 
     public void setViewImage(ImageView v, String value){ 
      try { 
       v.setImageDrawable(Drawable.createFromStream(localcontext.getAssets().open("flags/" + value + ".png"), null)); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

//EDIT ... he ask how to add odd/even row with diff colours 

     private int[] colors = new int[] { 0xe0e0e0ff, 0x404040ff }; 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View view = super.getView(position, convertView, parent); 
      int colorPos = position % colors.length; 
      view.setBackgroundColor(colors[colorPos]); 
      return view; 
     } 
    } 

和使用,而不是SimpleAdapter

+0

请参阅我的编辑 – Selvin 2011-06-13 14:32:51

相关问题