我具有与本片段的活性加载一个GridView。 GridView本身不在Fragment中。我通过BaseAdapter创建了一个客户适配器,并且一切都很好用。更新的GridView子
CustomerAdapter.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,所以我知道它是找到的看法。这是不更新它。任何帮助吗?
不是一个确切的回答你的问题,但它可能是更容易使用国家列表绘制,这里http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList的解释那么系统会自动为您处理。 – 2012-08-07 19:28:42
当调用onItemCheckedStateChange()时,系统是否足够聪明以自动触发状态变化?因为我无法从代码中触发任何东西,这就是我的问题所在。 – 2012-08-07 19:38:05
是的,当该项目被选中时,视图将被重新绘制,对应于可绘制状态列表中的“checked”状态的drawable。您可能需要在videoGallery上调用setItemChecked(position,true),但这不太可能。 – 2012-08-07 19:50:05