LayoutInflater和getLayoutInflater之间的区别

时间:2015-06-03 11:36:56

标签: android layout

我只是想知道

之间有什么区别
(RelativeLayout) LayoutInflater.from(mContext).inflate(R.layout.todo_item, null);

(RelativeLayout) ((Activity)mContext).getLayoutInflater().inflate(R.layout.todo_item, null);

以下是我使用它的方式:

public class SomeAdapter extends BaseAdapter {

    private final List<ItemEntry> mItems = new ArrayList<ItemEntry>();
    private final Context mContext;

    public SomeAdapter(Context context) {
        mContext = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        // TODO - Get the current ItemEntry
        final ItemEntry toDoItem = mItems.get(position);


        RelativeLayout itemLayout = null;
        // I'm getting ClassCastException on this.
        // itemLayout = (RelativeLayout) ((Activity) mContext).getLayoutInflater().inflate(R.layout.item_entry, null);

        // code run as expected
        itemLayout = (RelativeLayout) LayoutInflater.from(mContext).inflate(R.layout.item_entry, null);


        // more codes 
    }
}

1 个答案:

答案 0 :(得分:1)

getLayoutInflater(),在可用的地方,始终会为您提供LayoutInflater,其中会考虑主题和其他样式。

LayoutInflater.from()只会为您提供一个LayoutInflater,可能会考虑或不考虑主题和其他样式,尤其取决于您作为参数传递的Context内容

在测试测试和某些特殊情况之外(例如,Service需要扩充布局),使用getLayoutInflater()来扩充布局。