选择后如何下载图像并将其添加到卡中?

时间:2014-01-22 17:19:55

标签: google-glass google-gdk

CardScrollView中选择卡片时,会调用onItemSelected()方法。但是,我无法确定如何在选择后将图像添加到此卡。现在,我已经完成了一个kluge回调机制,我打电话给updateViews(true)

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    if (position == mSelectedPosition)
        return;
    mSelectedPosition = position;
    if (mCardScrollView != null)
        mCardScrollView.updateViews(true);
}

然后在适配器getView()中检查项目是否被选中,如果是,则异步加载图像:

if (mCardScrollView != null && mCardScrollView.getSelectedItemPosition() == pos) {
    String url = String.format(Board.THUMBNAIL_FORMAT, board, tim);
    CardImageLoader.loadCardImage(card, Card.ImageLayout.FULL, url, mCardScrollView);
}

CardImageLoader然后下载文件,并在下载成功后另一个调用updateViews(),最后调用card.addImage()并显示图像。< / p>

这样可行,但有时会使事情变慢,有时甚至没有反应。怎么做得更好?

更新:当您需要在CardScrollView中加载带有图像的卡列表时,请勿使用卡。相反,使用您自己的自定义布局来模拟卡片并使用标准图像加载器进行加载。即使列表非常长,这种方法也会好得多。

Google请将卡片布局XML打开,以便我们使用它们。

1 个答案:

答案 0 :(得分:0)

如果您持有卡片列表,则初始化CardScrollView(即来自https://developers.google.com/glass/develop/gdk/ui/theme-widgets#creating_scrolling_cards_in_activities的mCards),然后从列表中的该位置获取卡片,更新并拨打电话在.invalidate()上刷新视图,该视图应该来自onItemSelected