从主要活动刷新标签活动中的列表视图

时间:2018-08-18 20:00:19

标签: android listview tabs menu-items

我有一个带有选项菜单的主要活动,该菜单包含一个可检查的项目。我还有三个带有活动的选项卡,每个选项卡都包含一个列表视图。

我要执行的操作是在更改主活动中的可检查项目菜单选项时刷新所选标签的列表视图。

关于如何实现此目标的任何想法?

3 个答案:

答案 0 :(得分:0)

通常,当您具有选项卡时,您正在使用视图分页器,因此每个片段都应能够指定其自己的选项菜单,从而将范围保持在当前选定的列表中。

答案 1 :(得分:0)

在具有列表视图的Fragment的onResume()中调用适配器上的notifyDataSetChanged()。

答案 2 :(得分:0)

您可以执行解决方法。使用全局类。您可以将选定的已检查项目值存储在全局类中。并从代码中的任何位置访问该值。 How to create a global class

然后在片段中使用TimerTask来检查所选项目是否已更改并重新加载数据。

以下是实现TimerTask的方法 保留previousItem和currentItem作为字符串值以检查是否修改。

TimerTask timerTask;
Timer timer;
timerTask = new TimerTask() {
        @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    //check if the checkable item is modified
                    currentItem = globalClass.getCheckedItem();
                    if(!previousItem.equalsIgnoreCase(currentItem)){
                        previousItem = currentItem;
                        //load your data
                    }
                }
            });
        }
    };
    timer = new Timer();
    timer.scheduleAtFixedRate(timerTask, 0, 200);

globalClass.getCheckedItem();是用于从globalClass中获取所选项目的方法。从选项菜单中选择一个项目时,可以设置值 并确保取消计时器onPause()

@Override
protected void onPause() {
    if(timer != null){
        timer.cancel();
    }
    super.onPause();
}

希望这对您有用。