我在 Activity 中加载了一个 GridView,其中存在片段。GridView 本身并不位于 Fragment 中。我通过 BaseAdapter 创建了一个客户适配器,一切正常。
客户适配器.java
@Override
public View getView( int position, View convertView, ViewGroup parent ) {
ImageView v = new ImageView( activity );
Bitmap bmp = getBitmap( videoIds[ position ] );
v.setImageBitmap( bmp );
v.setAdjustViewBounds( true );
v.setPadding( 5, 5, 5, 5 );
v.setId( position );
thumbnails[ position ] = bmp;
return v;
}
我有一个上下文操作栏,可让您选择要上传、删除等的视频。
videoGallery.setChoiceMode( GridView.CHOICE_MODE_MULTIPLE_MODAL );
videoGallery.setMultiChoiceModeListener( new MultiChoiceModeListener() { ... }
我想在视频被选中时在视频周围添加一个边框,所以我需要做的就是添加背景颜色。所以我在上面列出的新 MultiChoiceModeListener() 部分中有这个:
@Override
public void onItemCheckedStateChanged( ActionMode mode, int position, long id, boolean checked ) {
ImageView image = (ImageView)videoGallery.findViewById( position );
if( checked ) {
image.setBackgroundColor( Color.YELLOW );
} else {
image.setBackgroundColor( Color.TRANSPARENT );
}
int count = videoGallery.getCheckedItemCount();
if( count == 1 ) {
mode.setSubtitle( "1 item selected." );
} else if( count != 0 ) {
mode.setSubtitle( count + " items selected." );
} else {
mode.setSubtitle( null );
}
}
问题是子视图没有更新。标题已更新“选择了 1 个项目,选择了 2 个项目等)所以我知道正在调用该方法。设置背景确实会产生背景,所以并不是我无法看到更改。视图本身没有更新。我什至在创建视图时在视图上设置了随机 ID,并且执行 image.getId() 提供了正确的 ID,所以我知道它正在查找视图。它只是没有更新它。有什么帮助吗?