2011-06-13 67 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