2013-02-14 31 views
7

我在诸如whatsup之类的消息传递平台上工作。当我发送消息时必须更新屏幕,因为我正在以db的形式获取数据。当我按下发送按钮时,必须更新View。 我GOOGLE了,但我不能确切的解决方案。有人能帮我吗?在android中刷新所有视图?

编辑:

我的代码:

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); 

回答

8

您将需要调用requestLayout()invalidate()取决于你在你看来

更新究竟是什么。如果你只需要View重绘所以致电invalidate()

如果更改View范围(例如, G。尺寸)致电requestLayout()

+0

修改我的代码。查看是我的布局? – DuyguK 2013-02-14 12:34:26

1

你用view.invalidate()尝试吗? http://developer.android.com/reference/android/view/View.html

制图

绘图通过遍历树和呈现每个查看 相交的无效区域进行处理。因为这棵树是按照顺序遍历的,所以这意味着父母将在他们的子女之前(即在他们的后面)绘制,并且兄弟姐妹按照它们出现在树中的顺序绘制。如果 您设置了一个View的背景可绘制,那么View在调用它的onDraw()方法之前会为您绘制它 。

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

要强制绘制视图,请致电invalidate()

你可以尝试像这个帖子的回复无效的ViewGroup:如果你使用一个ListView与listadapter How to force an entire layout View refresh?

+0

注意:如果您使用的是listView,您可以使用notifysetDataChanged()到您的适配器 – 2013-02-14 10:19:52

+0

我编辑我的代码。我的代码是一个。我动态添加了我的布局? – DuyguK 2013-02-14 12:33:37

+0

设置RelativeLayout布局;作为课堂上的一个领域。当你想刷新它尝试与layout.invalidate(); – 2013-02-14 12:40:07

3

,那么你必须使用listadapter.notifyDataSetChanged();这将与新的数据

更新您的ListView
1

最后,如果你只在你的布局一个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); 
       } 
}