我有一个使用自定义 ArrayAdapter 填充列表视图的 ListFragment。这工作正常。但是当我尝试使用“exerciseSetsItemAdapter.notifyDataSetChanged();”向列表视图添加新列表项时 我不能,出于某种原因,onActivityCreated() 之外的所有内容都为空。
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:调试/标签 1(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 集 []
第一个是activity中的onclick方法第二个是Fragment中的addSet方法。现在,如您所见,我的 ArrayAdapter 和我的 ArrayList 都是空的。
这里有什么问题???
编辑@Goofyahead:在 ListFragments FragmentActivity 中调用 AddSet():
public void addClickHandler(View target){
Log.d("Tag1", "addClickHandler" +singleExListFragment);
singleExListFragment.addSet();
}
xml中有一个OnClick。
Fragment 在 FragmentActivity 中实例化,如下所示:
SingleExListFragment singleExListFragment;
...
mTabsAdapter.addTab(mTabHost.newTabSpec("exercises").setIndicator("Exercise"),
singleExListFragment.getClass(), null);
一切都按预期工作,除了“AddSet”中的sets和ExerciseItemAdapter为空。