2011-04-15 81 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);