ListFragment中的GetListAdapter()返回null

时间:2016-01-17 17:37:11

标签: java android android-arrayadapter android-listfragment

我试图更新ListFragment中的List,但每当我使用clear()addAll()等函数时,getListAdapter()返回的适配器为空。

我可以从不同的片段成功获取新数据。在MainActivity中,一旦从界面收到新数据,我就会从MainActivity中调用ListFragment中的Method UpdatePlaylist()。所以我正在更新ListFragment本身的内容。

ListFragment:

public class PlaylistMusicBox extends ListFragment{

    private static final String ARG_SECTION_NUMBER = "section_number";
    List<String> Playlist = Arrays.asList("Loading Songs...");

    public PlaylistMusicBox() {
    }

    public static PlaylistMusicBox newInstance(int sectionNumber) {
        PlaylistMusicBox fragment = new PlaylistMusicBox();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.song_list, container, false);
        return rootView;
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1, Playlist);
        setListAdapter(adapter);
    }

    public void UpdatePlaylist(List<String> NewPlaylist){

        if (NewPlaylist!=null) {
            ArrayAdapter<String> adapter = (ArrayAdapter<String>) getListAdapter();
            setListAdapter(adapter);
            adapter.clear();
            adapter.addAll(NewPlaylist);
            adapter.notifyDataSetChanged();

        } else {
            System.out.println("New PLaylist is null");
        }
    }

}

我收到错误消息:Attempt to invoke virtual method 'void android.widget.ArrayAdapter.clear()' on a null object reference,但我的适配器是在onCreateActivity中定义的,所以我不明白为什么返回null作为适配器。

我还尝试使用新获得的列表再次设置适配器,但我仍然得到我的上下文为空的错误...如何更新ListFragment中的数据?

0 个答案:

没有答案