我正在研究John Horton的Android初学者编程,目前正在尝试创建笔记应用。霍顿(Horton)刚刚介绍了ListViews
。但是,我在adapter
class
上遇到了麻烦:
public class NoteAdapter extends BaseAdapter {
List<Note> mNoteList = new ArrayList<Note>();
@Override
public int getCount(){
return mNoteList.size();
}
@Override
public Note getItem(int whichItem){
return mNoteList.get(whichItem);
}
@Override
public long getItemId(int whichItem){
return whichItem;
}
@Override
public View getView(int whichItem, View view, ViewGroup viewGroup){
// check if view has been inflated already
if (view == null){
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); // ERROR HERE
view = inflater.inflate(R.layout.listitem, viewGroup, false);
}
return view;
}
}
问题出在
getView
方法中,我正在尝试inflate
layout
:Android Studio throws an error: 'Cannot resolve getSystemService(java.lang.String)'.
作为一个完全的新手,刚读完这本书,我不知道从这儿去什么地方或如何解决它-任何人都可以帮忙吗?
最佳答案
获取LayoutInflater
的最佳方法是在getLayoutInflater()
上调用Activity
。这样,就可以考虑活动的主题。如果在NoteAdapter
内定义了Activity
,则只需调用getLayoutInflater()
。如果NoteAdapter
是在其自己的单独的Java类文件中定义的,请通过构造函数传入LayoutInflater
。
为了更直接地解决您的问题,任何View
,例如ListView
,都可以调用getContext()
以获得Context
。那就是定义getSystemService()
的地方。因此,将getSystemService()
替换为viewGroup.getContext().getSystemService()
是可行的。