从AsyncTask更新CardScrollAdapter中的卡

时间:2014-05-12 23:28:25

标签: google-glass google-gdk

我已实施CardScrollAdapter以在Google Glass中显示Cards列表。每张卡片都有文字和图片。我希望图像来自内容提供商(具体来说,MediaStore.Video.Thumbnails),因此必须将其加载到AsyncTask中。

如何从getView修改适配器AsyncTask方法返回的视图,其中视图来自Card

    @Override
public View getView(int position, View convertView, ViewGroup parent) {
    if(convertView == null) {
        view = mInflater.inflate(R.layout.movie_row, parent, false);
    } else {
        view = convertView;
    }

    mVideoColumnIndex = mCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME);
    mIdColumnIndex = mCursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID);

    mCursor.moveToPosition(position);

    Card card = new Card(mContext);
    card.setImageLayout(ImageLayout.FULL);
    card.setText(mCursor.getString(mVideoColumnIndex));
    card.setFootnote((String.format("%d of %d", mCursor.getPosition() + 1, mCursor.getCount())));


    long id = mCursor.getLong(mIdColumnIndex);

            // AsyncTask not included for brevity (since it doesn't work yet)
    new ImageLoader().execute(card, Long.valueOf(id));

    return card.getView();
}

2 个答案:

答案 0 :(得分:2)

您应该使用具有嵌入式自定义布局的Card / CardBuilder。这样你就可以调用并抓取ImageView。

View view = new CardBuilder(context, CardBuilder.Layout.EMBED_INSIDE)
    .setEmbeddedLayout(R.layout.my_view)
    .setFootnote("Your Images")
    .setTimestamp("today")
    .getView();
ImageView imgView = (ImageView) view.findViewById(R.id.image_view_1);
imgView....;

如果你想使用CardBuilder,这对你有用。

答案 1 :(得分:1)

您需要创建自己的布局。如果您使用Card,则无法在调用getView()

后修改图片

如果您不知道如何对Card进行类似的布局,Google会在此为您提供一些示例:https://developers.google.com/glass/develop/gdk/ui-widgets#xml_layouts

PD:我认为你可以改变图像,如果你知道在调用card.getView()时创建的imageView的id,我认为你可以在调试和检查变量时这样做。< / p>