刷新android中的所有视图?

我工作的消息平台像whatsup.When我发送消息ı必须更新屏幕,因为我得到的数据在db.When我按发送buttonı必须更新查看。 我GOOGLE了,但我不能确切的解决scheme。可以帮助我吗?

编辑:

我的代码:

RelativeLayout layout=new RelativeLayout(this); LayoutParams lparams = new LayoutParams( 1200,LayoutParams.WRAP_CONTENT); layout.setLayoutParams(lparams); //layout.setBackgroundResource(R.drawable.bubble); // Creating a new TextView TextView tv = new TextView(this); tv.setText(msgdesc[i]); layout.setGravity(Gravity.RIGHT); tv.setPadding(30, 10, 0, 0); layout.addView(tv); bubbleLayout.addView(layout); 

Solutions Collecting From Web of "刷新android中的所有视图?"

您将需要调用requestLayout()invalidate()取决于您在视图中更新的内容

如果你只是需要重画,所以调用invalidate()

如果你改变View边界(例如size),调用requestLayout()

如果您使用listadapter的列表视图,那么你必须使用listadapter.notifyDataSetChanged(); 这将使用新数据更新您的列表视图

你有没有尝试view.invalidate()http://developer.android.com/reference/android/view/View.html

画画

绘图是通过遍历树并渲染与无效区域相交的每个视图来处理的。 因为树是按顺序遍历的,这意味着父母会在他们的孩子之前(即在他们的后面)绘制,并且兄弟姐妹按照它们出现在树上的顺序绘制。 如果你为一个View设置了一个可绘制的背景,那么这个View就会在你调用它的onDraw()方法之前为你绘制。

请注意,框架不会绘制不在无效区域中的视图。

要强制视图绘制,请调用invalidate()

你可以尝试像这个post中的回复无效的视图组: 如何强制整个布局视图刷新?

最后,如果你在布局中只有一个TextView,试试这个:

 //Supposing that msgdesc is a class field. void myRefreshFunction(RelativeLayout l) { if(l != null) { l.removeAllViews(); TextView tv = new TextView(this); tv.setText(msgdesc[i]); layout.setGravity(Gravity.RIGHT); tv.setPadding(30, 10, 0, 0); layout.addView(tv); } } 

看Dianne的回答 :

invalidate()只会导致视图重绘: http : //developer.android.com/reference/android/view/View.html#invalidate()

requestLayout()会要求视图通过新的度量/布局传递(然后重绘): http : //developer.android.com/reference/android/view/View.html#requestLayout()