我已实施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();
}
答案 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>