我有一个tablelayout,从*.txt文件中检索数据。
对于txt文件中的每一行数据,都会生成一行数据。
假设现在txt文件中有两行数据,那么就会生成两个tablerows。
然后,我添加了一个OnLongPressListener,当调用时,将从txt文件中删除一行数据。
现在是第一个问题:在删除txt文件中的数据后,如何刷新我的tablelayout以反映该更改?
第二个问题是:在解决第一个问题之后,是否可能有某种动画,其中一行将淡出或滑出,而不仅仅是完全消失?
谢谢!
我有一个tablelayout,从*.txt文件中检索数据。
对于txt文件中的每一行数据,都会生成一行数据。
假设现在txt文件中有两行数据,那么就会生成两个tablerows。
然后,我添加了一个OnLongPressListener,当调用时,将从txt文件中删除一行数据。
现在是第一个问题:在删除txt文件中的数据后,如何刷新我的tablelayout以反映该更改?
第二个问题是:在解决第一个问题之后,是否可能有某种动画,其中一行将淡出或滑出,而不仅仅是完全消失?
谢谢!
不确定您是否仍在寻找答案。但我遇到了类似的问题。再加上我被迫使用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);
为什么不使用 ListView
呢?它在使用 MVC 模型时可以更好地控制,其中数据集绑定到 View
。因此,您可以拥有一个扩展了 BaseAdapter
的类。该类将您的数据绑定到 View
,并且该类还具有一个方法:notifyDataSetChanged()
,这就是应该解决您的问题的方法。
您可能会发现 notifyDataSetChanged example 和 customListView 有所帮助。
如果您需要进一步的帮助,请告诉我。