我有一个ListFragment,它使用自定义ArrayAdapter来填充列表视图。这很好用。但是当我尝试使用“exerciseSetsItemAdapter.notifyDataSetChanged();”将新的listitem添加到listview时我不能,因为某些原因,onActivityCreated()之外的所有内容都是null。
public class SingleExListFragment extends SherlockListFragment {
ArrayList<ExerciseSetsRecord> sets= new ArrayList<ExerciseSetsRecord>();
public ExerciseSetsItemAdapter exerciseSetsItemAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.single_exercise, container, false);
return v;
}
public void onCreate(Bundle sa)
{
Log.d("Tag1", "ONCREATE!!!!");
super.onCreate(sa);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ExerciseSetsRecord exerciseSetsRecord1 = new ExerciseSetsRecord(1, 0, 0);
sets.add(exerciseSetsRecord1);
ExerciseSetsRecord exerciseSetsRecord2 = new ExerciseSetsRecord(2, 0, 0);
sets.add(exerciseSetsRecord2);
ExerciseSetsRecord exerciseSetsRecord3 = new ExerciseSetsRecord(3, 0, 0);
sets.add(exerciseSetsRecord3);
exerciseSetsItemAdapter = new ExerciseSetsItemAdapter(getActivity(),
android.R.layout.simple_list_item_1, sets);
setListAdapter(exerciseSetsItemAdapter);
Log.d("Tag1", "onActivitycreated: " + exerciseSetsItemAdapter);
Utility.setListViewHeightBasedOnChildren(getListView());
}
public void addSet(){
Log.d("Tag1", "onClick Fragment" + exerciseSetsItemAdapter + " sets " + sets);
ExerciseSetsRecord exerciseSetsRecord4 = new ExerciseSetsRecord(1, 0, 0);
sets.add(exerciseSetsRecord4);
// exerciseSetsItemAdapter.notifyDataSetChanged();
}
}
logcat onCreate:
07-05 12:37:44.855:DEBUG / Tag1(18853):onCreate singleexlistfrag SingleExListFragment {4171f760}
07-05 12:37:44.865:DEBUG / Tag1(18853):ONCREATE !!!!
07-05 12:37:44.875:DEBUG / Tag1(18853):onActivitycreated:com.example.ExerciseSetsItemAdapter@416f1bf0
首先是在片段活动中创建片段,最后是片段中的onActivityCreated。
按钮点击:
07-05 12:38:58.070:DEBUG / Tag1(18853):addClickHandlerSingleExListFragment {4171f760}
07-05 12:38:58.070:DEBUG / Tag1(18853):onClick Fragmentnull sets []
首先是活动中的onclick方法 第二个是Fragment中的方法addSet。现在,正如您所看到的,我的ArrayAdapter是null,还有我的ArrayList。
这里有什么问题???
编辑@ Goofyahead: 在ListFragments FragmentActivity中调用AddSet():
public void addClickHandler(View target){
Log.d("Tag1", "addClickHandler" +singleExListFragment);
singleExListFragment.addSet();
}
xml中有一个OnClick。
片段在FragmentActivity中实例化,如下所示:
SingleExListFragment singleExListFragment;
...
mTabsAdapter.addTab(mTabHost.newTabSpec("exercises").setIndicator("Exercise"),
singleExListFragment.getClass(), null);
除了“AddSet”中的sets和ExerciseItemAdapter为null外,一切都按预期工作。