2011-04-15 114 views
3

我有一個tablelayout從* .txt文件中檢索數據。 對於txt文件中的每一行數據,都會有一行數據。Android:如何刪除行後刷新tablelayout?

比方說,我現在有兩行數據在txt文件中,這意味着將生成兩個表格。

然後,我添加了一個OnLongPressListener,它在被調用時將從txt文件中刪除一行數據。

現在的第一個問題:刪除txt文件中的數據之後,如何刷新我的表格佈局以反映該更改?

第二個問題是:在我解決了第一個問題之後,是否可以製作某種動畫,其中一行將淡出或滑出,而不是完全消失?

謝謝!

+1

您需要接受爲您工作的答案,以便下次您提問時 - 人們不要猶豫,以發佈答案! – 2011-04-20 03:18:34

回答

0

爲什麼不使用ListView代替?當使用MVC模型時,您可以更好地控制數據集綁定到View。所以你可以有一個延伸BaseAdapter的課程。這個類綁定你的數據到View,這個類也有一個方法:notifyDataSetChanged()這是什麼應該解決你的問題。

您可能會感興趣notifyDataSetChanged examplecustomListView有幫助。

讓我知道你是否需要進一步幫助。

+0

我同意列表是一個更好的方式去。並且可能更容易找到/創建一個可能的動畫解決方案。 – Wayner 2011-04-15 18:09:17

+0

好吧我試過了你的建議,但幾乎不可能(或者我只是不知道該怎麼做)將我的設置轉換爲列表視圖。我有一個電阻和四個textview(每個沒有文本,但不同的背景顏色)的背景圖片。你看這是如何工作的? 我嘗試應用listview和自定義我自己的simple_list.xml有一個電阻的背景。但我不知道如何將四個textview添加到一行listview。 – Danny 2011-04-15 18:50:48

+0

好的。我不知道你的四個TextView會如何顯示,但本教程中的row.xml已經有兩個TextView,所以你只需再添加兩個,應該不是那麼簡單嗎? – 2011-04-15 20:13:31

1

一般在的onCreate()我們所有的顯示文本用戶界面的東西,儘量把,構成了UI的私有方法的代碼說setUpTabView()並試圖調用這從onCreate甚至嘗試調用這個setUpTabView()當文字改變了。這種方法我在網格視圖中完成。工作得很好......!

4

不知道你是否還在尋找答案。但我碰到這個帖子面臨着同樣的問題。此外,我被迫使用TableLayout(使用TableLayout編寫的代碼量很大,並且我不打電話給ListView)。 我最終什麼事做是爲了利用TableLayout刪除所有的觀點:

`tableLayout.removeAllViews();` 

但是,如果行取出後,在數量急劇變化是不是要去工作。我需要使用處理程序來使我的視圖無效。這是我的代碼的其餘部分。

protected static final int REFRESH = 0; 

private Handler _hRedraw; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.tree_view_activity); 

    _hRedraw=new Handler(){ 
     @Override 
     public void handleMessage(Message msg) 
     { 
      switch (msg.what) { 
      case REFRESH: 
       redrawEverything(); 
       break; 
      } 
     } 
    }; 
    ... 
} 
private void redrawEverything() 
{ 
    tableLayout.invalidate(); 
    tableLayout.refreshDrawableState(); 
} 

只有一個部分留下,這就是部分地方將郵件發送到您的處理刷新視圖。這裏是它的代碼:

_hRedraw.sendEmptyMessage(REFRESH);