【问题标题】:Custom SimpleCursor adapter BindView calls自定义 SimpleCursor 适配器 BindView 调用
【发布时间】:2015-02-01 19:34:31
【问题描述】:

我想知道是否有办法让 BindView 每个项目只工作一次?

我们滚动离开屏幕的项目会被破坏吗?当他们回来时,我们必须再次运行 bindview 吗?

原因是我让我的适配器下载图像并将其设置在项目上。

当我滚动时,图像会再次下载,即使我没有退出应用程序。

每次一个项目“返回”显示时都会调用 bindview,所以即使我已经下载了它,它也会再次执行 asyntask(在适配器中调用 asyntask)

我什至尝试在每次下载后将 BLOB 保存在我的数据库中,以了解何时调用 asyntast 以及何时从数组中制作位图

if(photoBArray != null){    
            Bitmap bitmap = BitmapFactory.decodeByteArray(photoBArray, 0, photoBArray.length);
                holder.icon.setImageBitmap(bitmap);
            }else{
            holder.icon.setImageResource(R.drawable.loader);
            String urlString = "https://maps.googleapis.com/maps/api/place/photo?maxwidth=100&photoreference="
                    + c.getString(c.getColumnIndex(PlacesDBHelper.PHOTO_REFERENCE_COL))+"&key=API_KEY";
            Log.e("Photo REFERENCE", c.getString(c.getColumnIndex(PlacesDBHelper.PHOTO_REFERENCE_COL)));
            try {
                URL url = new URL(urlString); // create new URL object from url string
                new ImageDownloader(holder.icon, this).execute(url);
            }catch (Exception e){
                Log.e("Error in url", e.getMessage());
            }
            }

我也在使用 chrisbanes pulltorefresh listview,我不确定这是否是问题的原因

底线问题:当一个项目回到屏幕而不是重新创建时,如何让一个项目看起来稳定和准备好? (因为即使我不下载图像而只设置位图,setimagebitmap 的操作也可能在慢速手机上可见)

提前致谢!

【问题讨论】:

    标签: android bitmap android-asynctask simplecursoradapter pull-to-refresh


    【解决方案1】:

    ListView 的全部意义在于回收行视图。它们不会被破坏,它们会被传递回适配器以与另一行的新数据绑定。如果您将项目滚动到屏幕外足够远,然后将其滚动回屏幕,则预计将再次调用 getView(或在光标适配器的情况下为 bindView)。

    您需要的是下载任务和适配器之间的图像缓存层。当bindView 发生时,首先检查缓存以查看图像是否存在。如果是,请使用它。如果不是,请下载并添加到缓存中,然后使用它。

    【讨论】:

    • 首先,非常感谢!如果是这样,我有另一个问题。我使用适配器下载图像,正如你所说,一旦我完成下载,我需要将它保存在我的数据库中。我的问题是我不知道应该在哪里添加数据,因为我没有下载的图像原始项目的任何 ID 或 POS。我确实使用这个 tut 来执行异步下载:javatechig.com/android/…您有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多