我正在研究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 layoutAndroid 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()是可行的。

09-05 10:08