我在使用Android Eclipse时正在处理一个项目,用户可以使用图像保存和上传笔记。
我有一个片段,其中包含textview和一些缩略图。用户可以使用相机添加其他图像,他们可以通过查看(单击)图像(在单独的活动中)删除图像并删除它。
我的问题是刷新片段的布局以反映已删除的图像。目前正在调用以下函数来处理此问题:
public ViewGroup removeNoteImageFromView(String location) {
List<String> imageLinks = new ArrayList<String>();
for (String string : imageLocations) {
if (string.equalsIgnoreCase(location)) {
break;
}
imageLinks.add(string);
}
//REMOVE ALL THE IMAGEVIEWS from the Linear Layout
LinearLayout linear = (LinearLayout) rootView.findViewById(R.id.imageContainer);
if (linear.getChildCount() != 0) {
linear.removeAllViewsInLayout();
linear.refreshDrawableState();
linear.postInvalidate();
}
imageLocations.addAll(imageLinks);
//Add them all back from the new array
String root = Environment.getExternalStorageDirectory().toString();
for (String string : imageLinks) {
Bitmap myBitmap = BitmapFactory.decodeFile((new File(root +"/saved_images/"+string)).getAbsolutePath());
addImage(myBitmap);
}
return linear;
}
所有这些代码都隐藏了由linear.removeAllViewsInLayout()调用的所有缩略图。然而,以下两行是我认为会重新加载屏幕上的布局但它们似乎没有任何效果。
请注意我已经尝试过linear.invalidate()以及postInvalidate但仍然没有得到任何结果。
正确的图像会从设备中删除,因为这是在其他地方处理的,所以当我通过在菜单中重新选择它回到这个片段时,一切都会正确显示。
答案 0 :(得分:1)
替换它:
linear.refreshDrawableState();
linear.postInvalidate();
有了这个:
linear.requestLayout();
答案 1 :(得分:0)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Your code is here...
// for refresh view use..
convertView.invalidate();
}
答案 2 :(得分:-1)
好的,我终于明白了!
我感觉有点愚蠢,因为代码工作正常,但根路径不正确,所以它没有找到要添加回视图的图像。
感谢您的所有回复和帮助。对不起我的新手(我已经在几周内使用了Java)。