0

我有一个ExpandableListView正常填充行的字段。但是,其中一个字段是ImageView其中图像的路径存储在变量中。问题是扩展/折叠和 scolling 列表视图很慢。展开/折叠大约需要一秒钟。这是正常的吗?有没有办法让它更快?下面的ImageView代码是我怀疑它是性能背后的原因的代码(我评论它并且速度是可以接受的)

请让我知道可以做什么。

String imagePath = prop.getImagePath();
if (imagePath.length() > 0) {
    Uri mainImgeUri = Uri.parse(imagePath);
    InputStream imageStream;
    try {
        imageStream = mActiviy.getContentResolver().openInputStream(mainImgeUri);
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 8;
        Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream, null, options);
        holder.mainImage.setImageBitmap(yourSelectedImage);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

请注意,变量 prop 是从数据库中获取的,该数据库imagePath以字符串形式存储在数据库中。数据库查询甚至在初始化列表之前就发生了,因此它不会影响性能。

4

1 回答 1

1

我假设这个代码块在getView()你的适配器的方法中,由于holder.main.... 如果是这样,这是一种糟糕的做法,因为您应该了解这将对每一ExpandableList行进行。效果应该在滚动和展开/折叠期间明显,因为getView()可能会为所有这些行调用并且这些图像正在被外部检索。

更好的是设置一个集合来保存这些图像,然后一次批量插入它们。然后,您可以使用此图像集合来填充您的可扩展列表。convertView如果还没有,也可以考虑使用该技术。

于 2013-02-17T07:14:11.453 回答