我刚开始使用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
方法中实现该列表适配器?为什么我的方法失败了?请详细解释。
答案 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;
}