1

我有一个使用自定义 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为空。

4

0 回答 0