我们什么时候在android中调用onCreateView方法

时间:2015-07-03 22:44:40

标签: android android-fragments android-activity

我刚开始使用Big Nerds Ranch Guide学习android。我们正在实现一个列表适配器来显示列表。 我不明白为什么我们没有在onCreateView()中调用列表适配器。据我所知,我们调用onCreateView来显示片段的内容。使用listAdapter实际上会在设备的屏幕上显示该列表。那么为什么不在onCreateView方法中实现呢?

public View onCreateView(LayoutInflator inflator, ViewGroup parent, Bundle savedInstanceState) {
    View v=inflator.inflate(android.R.layout.simple_list_item_1,parent,false)// I used this layout because that is what presenting the list. 
    listOfCrime = CrimeLab.get(getActivity()).getCrimes();
    ArrayAdapter<Crime> listAdaptor = new ArrayAdapter<Crime>(getActivity(),android.R.layout.simple_list_item_1,listOfCrime);
    setListAdapter(listAdaptor);
}

正如预期的那样,这种方法失败了。为什么我们需要在片段的onCreate方法中实现该列表适配器?为什么我的方法失败了?请详细解释。

1 个答案:

答案 0 :(得分:0)

您必须首先在布局中定义ListView小部件(android.R.layout.simple_list_item_1不是包含ListView的布局,它是ListView的布局项)和setAdater到ListView小部件。

public View onCreateView(LayoutInflator inflator, ViewGroup parent, Bundle savedInstanceState)
{
    View v=inflator.inflate(android.R.layout.simple_list_item_1,parent,false); // This is not layout with list, you must create new, add ListView and insert layout here instead of android.R.layout.simple_list_item_1, because it's only item
    listOfCrime=CrimeLab.get(getActivity()).getCrimes();
    ArrayAdapter<Crime> listAdapter=new ArrayAdapter<Crime>(getActivity(),android.R.layout.simple_list_item_1,listOfCrime);
    ListView listView = (ListView) v.findViewById(R.id.list);
    listView.setAdapter(listAdapter);
    return v;
}