2017-07-14 2 views
0

Ich habe eine Linearlayout namens "resultView". Ich habe dann dynamisch viele textViews hinzugefügt, nachdem ich auf eine Schaltfläche geklickt habe. Ich möchte alle Textansichten entfernen, die ich gerade erstellt habe, wenn ich erneut auf die Schaltfläche klicke.Android-Layout aktualisiert nicht nach dem Aufruf von removeAllViews()

btn_search.setOnClickListener(new Button.OnClickListener(){ 
     @Override 
     public void onClick(View view) { 
      resultView.removeAllViews(); 

      String strFileName = et_fileName.getText().toString(); 
      searchFiles(strFileName); 
    } 
}); 

public void searchFiles(String strFileName){ 
    .... 

    for (int i = 0; i < fileList.size(); i++) { 
     TextView textView = new TextView(this); 
     textView.setText(fileList.get(i).getName()); 
     textView.setPadding(5, 5, 5, 5); 

     if (fileList.get(i).isFile()) 
      resultView.addView(textView); 
    } 
} 

App Screenshot, Alle werden die aufgelisteten Ergebnisse Textviews dynamisch erstellt.

My XML, die ID "view" ist meine resultView.

Aber resultView.removeAllViews(); funktioniert nicht. Die Ergebnisse sind noch offen. Aufruf resultView.invalidate(); danach funktioniert auch nicht.

Was muss ich tun, damit das Layout aktualisiert wird?

+0

addieren Sie auch resultView.RequestLayout(); –

+0

resultView.RequestLayout() funktioniert nicht – Eiko

+0

Wenn Sie nicht in mainThread sind, verwenden Sie postInvalidate() anstelle von invalidate(). Waren Sie Anruf invalidate() in Ihren Code? In "onClickListener" entfernen Sie nur Ansichten. –

Antwort

0

Verwenden Sie .invalidate() zum Aktualisieren der Benutzeroberfläche.

Verwandte Themen