如何在TableLayout中刷新数据?

3
我有一个 TabbedLayout。在我的标签1及其活动中,我有用于添加用户并存储在表中的字段。在我的标签2中,我有一个布局,显示来自此表的所有已添加用户。
我的问题是,在标签1中添加用户时,数据将添加到该表中。当我切换到标签2后,会显示除这个新添加的用户外的所有用户。但如何刷新此表?
当我更改选项卡时,如何刷新标签2onCreateView
我尝试了下面的语句,但没有帮助。
trackerTbl.invalidate();
trackerTbl.refreshDrawableState();

有人能帮我刷新这个表格吗?


您是否在Tablayout中使用Activity作为选项卡? - Jyoti JK
是的,没错。对于这两个选项卡,我有两个不同的布局。 - Uday
1个回答

1
在Tab1中,当数据成功添加到表格中时发送广播。
Intent data_added = new Intent("data_added");
LocalBroadcastManager.getInstance(this).sendBroadcast("data_added");

在Tab2的onResume()方法中编写以下代码。
@Override
public void onResume() {
    super.onResume();

    BroadcastReceiver receiver_insert_customer = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            // checking for type intent filter
            if (intent.getAction().equals("data_added")) {
                onResume();
            }
        }
    };
    LocalBroadcastManager.getInstance(YourActivityName.this).registerReceiver(receiver_insert_customer,
            new IntentFilter("data_added"));

    models = new ArrayList<>();
    models = databaseobject.yourmethodfetchdatafromdb();
    adapter = new customAdapter(getApplicationContext(), models);
}

在新的Intent("data_added")中,我需要指定什么值("data_added")? - Uday
当我们使用Intent发送数据时,需要使用键(key)。这里的键是"data_added"。 - Android Hupp Technologies
这里无论我说什么数据插入,我都是直接使用一些DBHelpers进行插入,并调用一个像insertUser(String,String blaa blaa...)的方法。那么你的答案适用于这里吗? - Uday
是的,您可以应用这段代码。 在将用户插入数据库后,您可以在代码中发送广播。 Intent data_added = new Intent("data_added"); LocalBroadcastManager.getInstance(this).sendBroadcast("data_added");要更新表格的片段将编写另一段代码,该代码已在答案中编写。 - Android Hupp Technologies
@ Android Hupp,谢谢你的帮助。但是我现在面临的挑战是,我想清除之前显示的内容,只显示最新的内容。例如:假设我有3条记录显示在onResume中。在Tab1中,我添加了另一条记录。然后在我的Tab2中,它显示了前3条记录,然后显示了4条记录,其中包括新添加的记录。如何删除之前的3条记录,只显示更新的4条记录。 - Uday
抱歉,我在onResume的第一条语句中使用了removeAllViews,现已成功解决问题。非常感谢你的帮助,Android Hupp。 - Uday

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接