我有一个列表视图,显示来自我的数据库的不同数据。这工作perfeclty。不过,我只能在我的列表中有3个项目,因为我加载完整的图像后,内存不足。这是我现在正在工作的代码,但当列表中有三个以上的列表项时,会给出内存不足。在数据库的列表视图中显示图标
String[] from = new String[] { "NAME", "DATE", "WEIGHT", "IMAGE_PATH"};
int[] to = new int[] { R.id.name, R.id.date, R.id.weight, R.id.list_image};
contactAdapter = new SimpleCursorAdapter(
Mylistview.this, R.layout.list_row, null, from, to);
setListAdapter(contactAdapter);
我想要做的是将图像加载到列表中之前将图像缩小到72x72。下面是不工作的方式我想一个代码,但它给你的我想要什么:)
list_image = (ImageView) findViewById(R.id.list_image);
String[] from = new String[] { "NAME", "DATE", "WEIGHT", "IMAGE_PATH"};
int[] to = new int[] { R.id.name, R.id.date, R.id.weight};
contactAdapter = new SimpleCursorAdapter(
Mylistview.this, R.layout.list_row, null, from, to);
setListAdapter(contactAdapter);
String icon = "IMAGE_PATH"
Bitmap bmp = BitmapFactory.decodeStream(icon);
Bitmap bm = Bitmap.createScaledBitmap(bmp, 72, 72, false);
list_image.setImageBitmap(bm);
我希望字符串图标,可获取从自装“IMAGE_PATH”图像路径的想法字符串数组中的数据库。
有没有办法做到这一点,或者我需要找到其他方式来填充我的列表视图与图像和小图标?也许当我拍照时,我应该将图像保存在两个地方。一个真实的图像和一个图标,并把图标路径到数据库?
谢谢
这是代码,做什么Vishva帕特尔帮着后的错误代码。
BitmapScaler scaler = null;
try {
scaler = new BitmapScaler(new File("IMAGE_PATH"), 72);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
list_image.setImageBitmap(scaler.getScaled());
08-08 22:23:15.973: E/AndroidRuntime(2947): FATAL EXCEPTION: main
08-08 22:23:15.973: E/AndroidRuntime(2947): java.lang.RuntimeException: Unable to start activity ComponentInfo{se.xflash.myapp/se.xflash.myapp.myapp}: java.lang.RuntimeException: Unable to start activity ComponentInfo{se.xflash.myapp/se.xflash.myapp.MyNames}: java.lang.NullPointerException
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.ActivityThread.access$600(ActivityThread.java:127)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.os.Handler.dispatchMessage(Handler.java:99)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.os.Looper.loop(Looper.java:137)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.ActivityThread.main(ActivityThread.java:4507)
08-08 22:23:15.973: E/AndroidRuntime(2947): at java.lang.reflect.Method.invokeNative(Native Method)
08-08 22:23:15.973: E/AndroidRuntime(2947): at java.lang.reflect.Method.invoke(Method.java:511)
08-08 22:23:15.973: E/AndroidRuntime(2947): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
08-08 22:23:15.973: E/AndroidRuntime(2947): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
08-08 22:23:15.973: E/AndroidRuntime(2947): at dalvik.system.NativeStart.main(Native Method)
08-08 22:23:15.973: E/AndroidRuntime(2947): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{se.xflash.myapp/se.xflash.myapp.MyNames}: java.lang.NullPointerException
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1809)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:682)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.widget.TabHost.setCurrentTab(TabHost.java:346)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.widget.TabHost.addTab(TabHost.java:236)
08-08 22:23:15.973: E/AndroidRuntime(2947): at se.xflash.myapp.myapp.onCreate(myapp.java:45)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.Activity.performCreate(Activity.java:4465)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
08-08 22:23:15.973: E/AndroidRuntime(2947): ... 11 more
08-08 22:23:15.973: E/AndroidRuntime(2947): Caused by: java.lang.NullPointerException
08-08 22:23:15.973: E/AndroidRuntime(2947): at se.xflash.myapp.BitmapScaler.<init>(BitmapScaler.java:42)
08-08 22:23:15.973: E/AndroidRuntime(2947): at se.xflash.myapp.MyNames.onCreate(MyNames.java:56)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.Activity.performCreate(Activity.java:4465)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
08-08 22:23:15.973: E/AndroidRuntime(2947): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
08-08 22:23:15.973: E/AndroidRuntime(2947): ... 21 more
不错,这真的看起来很有趣。然而这给了我一个零点表达式。为了让月食更加快乐,我必须围绕缩放器进行尝试和捕获,并使得缩放器= null。那不工作:) BitmapScaler scaler = null; \t try { \t \t scaler = new BitmapScaler(new File(“IMAGE_PATH”),72); \t}赶上(IOException的发送){ \t \t // TODO自动生成的catch程序块 \t \t e.printStackTrace(); \t} list_image.setImageBitmap(scaler.getScaled()); – user1512762 2012-08-08 19:27:20
等待,哪行代码会抛出NullPointerException,是否可以复制和粘贴引发空点异常的行的内容?当然,你必须用try catch来包围这段代码,因为你正在创建一个新的File(),如果该文件不存在,可能会抛出一个IOException。 – 2012-08-08 19:54:27
我编辑了我的原始文章,错误日志 – user1512762 2012-08-08 20:32:45