我试图更新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中的数据?