Android 将图像从资产文件夹放入listarray

Android 将图像从资产文件夹放入listarray,android,listview,bitmap,assets,Android,Listview,Bitmap,Assets,我想把位图图像放到ListView 我使用这种方法: public Drawable getAssetImage(Context context, String filename) throws IOException { AssetManager assets = getAssets(); InputStream buffer = new BufferedInputStream((assets.open("flags/" + filename + ".png")));

我想把位图图像放到ListView

我使用这种方法:

    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)

不要在HashMap中存储Drawable,使用您自己的SimpleAdapter实现,如下所示 (作为hashmap中的“图标”,仅放置文件名)

公共类mysimpledapter扩展了simpledapter{
Context localcontext=null;
公共MySimpleAdapter(上下文,
列表>数据,int资源,
字符串[]从,整数[]到){
超级(上下文、数据、资源、从、到);
localcontext=context;
}
@凌驾
public void setViewImage(ImageView v,字符串值){
试一试{
v、 setImageDrawable(draawable.createFromStream(localcontext.getAssets().open(“flags/”+value+“.png”),null));
}捕获(IOE异常){
e、 printStackTrace();
}
}
//编辑…他问如何添加具有不同颜色的奇数/偶数行
私有int[]颜色=新int[]{0xE0E0FF,0x404040ff};
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图=super.getView(位置、转换视图、父级);
int colorPos=位置%colors.length;
视图.setBackgroundColor(颜色[colorPos]);
返回视图;
}
}

使用MySimpleAdapter而不是SimpleAdapter

czy możesz pokazaćwięcej kodu(nie tutaj może przemek kropka sulikowski na dżimajl)zmienie Ci kodżywałnie używa 322; yasimpledapter tylko właໟnie Simplecursoradapter。。。jeśli chodzi o nadpisanie to normalnie musisz zrobic子类klasy SimpleDapter czyli cośtakiego
类MySimpleDapter扩展了SimpleDapter{public MySimpleDapter(…jak SimpleDapter){super(…tak sie wywołuje Konstructor klasy Bazowj;}public void setViewImage(android.widget.ImageView v,java.lang s){v.setImageDrawable(Drawable.createFromStream(getAssets().open(“flags/”+s+“.png”),null));}
    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;
        }
    }