2013-02-14 10 views
7

Ich arbeite auf Messaging-Plattform wie whatsup.When ı Nachricht senden ı muss den Bildschirm aktualisieren, weil ich Daten in db.Wenn ich die Schaltfläche senden ı muss Ansicht zu aktualisieren. Ich googelte, aber ich kann keine genaue Lösung.Kann jemand mir helfen?Aktualisieren Sie alle Ansicht in Android?

EDIT:

mein Code:

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

Antwort

8

Sie anrufen müssen entweder requestLayout() oder invalidate() davon ab, was Sie

genau in Ihrer Ansicht aktualisieren Wenn Sie nur die View müssen neu gezeichnet also rufen Sie invalidate()

Wenn Sie die View Grenzen (e. G. Größe) Anruf requestLayout()

+0

ich meinen Code bearbeiten. Ansicht ist mein Layout? – DuyguK

1

Haben Sie es mit view.invalidate() versucht? http://developer.android.com/reference/android/view/View.html

Zeichnung

Zeichnung wird durch den Baum Fuß gehandhabt und jede Ansicht Rendering dass die ungültige Region schneidet. Da der Baum in der richtigen Reihenfolge durchlaufen wird, bedeutet das, dass die Eltern ihre Kinder ( ) vorziehen (d. H. Hinter ihnen), wobei die Geschwister in der Reihenfolge gezeichnet werden, in der sie im Baum erscheinen. Wenn Sie einen Hintergrund festlegen, der für eine Ansicht ausklappbar ist, dann zeichnet die Ansicht für Sie , bevor Sie die Methode onDraw() aufrufen.

Beachten Sie, dass das Framework keine Ansichten zeichnet, die nicht in der ungültigen Region sind.

Um das Zeichnen einer Ansicht zu erzwingen, rufen Sie invalidate().

Sie wie die Antwort in diesem Beitrag nicht ungültig machen die Viewgroup versuchen: How to force an entire layout View refresh?

+0

Hinweis: Wenn Sie eine ListView verwenden, können Sie NotifySetDataChanged() zu Ihrem Adapter verwenden –

+0

Ich bearbeite meinen Code.Which ist meine Ansicht.Ich habe mein Layout dynamisch hinzugefügt? – DuyguK

+0

Legen Sie das RelativeLayout-Layout fest; als ein Feld in der Klasse. Und wenn Sie es aktualisieren möchten, versuchen Sie es mit layout.invalidate(); –

3

, wenn Sie eine Listenansicht mit einem listadapter verwenden, dann müssen Sie

aktualisieren Sie Ihre Listenansicht mit den neuen Daten verwenden listadapter.notifyDataSetChanged(); diese wird
1

Schließlich, wenn Sie nur eine Textview in Ihrem Layout haben diese versuchen:

//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); 
       } 
} 
Verwandte Themen