【问题标题】:Get adapter from OnActivityCreate()从 OnActivityCreate() 获取适配器
【发布时间】:2015-06-03 22:12:55
【问题描述】:

我正在尝试从 MainActivity 在 Fragment 中的适配器上调用 notifyDataSetChanged(),以便在更改数据后刷新视图/列表。我在OnActivityCreate() 中创建了适配器,所以我无法找出如何获取适配器,以便我可以创建一个调用方法,该方法将具有adapter.notifyDataSetChanged()

片段

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    String[] names = new String[] { "name1", "name1", "name1" };
    String[] values = new String[] { "value1", "value2", "value3" };
    MyArrayAdapter adapter = new MyArrayAdapter(getActivity(), names, values);
    setListAdapter(adapter);
}

我尝试在片段中创建一个方法并将adapter 传递给它,但我无法从主活动中调用它。 getListAdapter() 也不让我打电话给 notifyDataSetChanged()。这里很困惑,谢谢!

【问题讨论】:

    标签: java android android-fragments android-listview notifydatasetchanged


    【解决方案1】:

    只要让它对整个 Activity 可见。

    ... MyClass {
    
        private MyArrayAdapter adapter;
    
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
    
            String[] names = new String[] { "name1", "name1", "name1" };
            String[] values = new String[] { "value1", "value2", "value3" };
            adapter = new MyArrayAdapter(getActivity(), names, values);
           setListAdapter(adapter);
        }
    
        // Another method
        private void myMethod() {
              adapter.notifyDataSetChanged();
        }
    }
    

    【讨论】:

    • 我认为他的问题是从 MainActivity 通知而不是从片段通知。我将继续您的解决方案并将 myMethod 公开。您还应该有对保存在 MainActivity 中的片段的引用,然后使用它来调用 myMethod ,这反过来将调用适配器上的通知。
    猜你喜欢
    • 2013-08-27
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2012-08-24
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多