<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                原書籍P177第二段行開始關于LayoutInflater的inflate方法解析,初次看到這里不狠命比,這里做一下總結說明 ``` class FruitAdapter(activity: Activity, val resourceId: Int, data: List<Fruit>) : ArrayAdapter<Fruit>(activity, resourceId, data) { override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { val view: View val viewHolder: ViewHolder if (convertView == null) { view = LayoutInflater.from(context).inflate(resourceId, parent, false) val fruitImage: ImageView = view.findViewById(R.id.fruitImage) val fruitName: TextView = view.findViewById(R.id.fruitName) viewHolder = ViewHolder(fruitImage, fruitName) view.tag = viewHolder } else { view = convertView viewHolder = view.tag as ViewHolder } val fruit = getItem(position) // 獲取當前項的Fruit實例 if (fruit != null) { viewHolder.fruitImage.setImageResource(fruit.imageId) viewHolder.fruitName.text = fruit.name } return view } inner class ViewHolder(val fruitImage: ImageView, val fruitName: TextView) } ``` 上面的重寫的getView方法中加載布局XML文件時,調用了inflate方法, ~~~ view = LayoutInflater.from(context).inflate(resourceId, parent, false) ~~~ 調用`inflate(int resource, ViewGroup root, boolean attachToRoot) `,這里作者在第一行代碼中這樣描述:“第三個參數指定成false,表示只讓我們在父布局中聲明的layout屬性生效,但不會為這個View添加父布局,因為一旦View有了父布局之后,它就不能再添加到ListView中了。”,初始理解起來可能有點晦澀難懂,我們從作者的博客中找到這篇文章[Android LayoutInflater原理分析,帶你一步步深入了解View](https://blog.csdn.net/guolin_blog/article/details/12921889),關于inflate方法`inflate(int resource, ViewGroup root, boolean attachToRoot) `這樣說到: 1. 如果root為null,attachToRoot將失去作用,設置任何值都沒有意義。 2. 如果root不為null,attachToRoot設為true,則會給加載的布局文件的指定一個父布局,即root。 3. 如果root不為null,attachToRoot設為false,則會將布局文件最外層的所有layout屬性進行設置,當該view被添加到父view當中時,這些layout屬性會自動生效。 4. 在不設置attachToRoot參數的情況下,如果root不為null,attachToRoot參數默認為true。 即便這樣,大家可能覺得還是難懂,那么我們從評論中,看到已經有網友給出了通俗易懂的講解:“**attachToRoot那里可能有的人看不懂,其實就是如果root!=null,分兩種情況討論, attachToRoot為false的情況下,直接就把LayoutParam設置給了該view,當它在被添加到父容器中才能生效; attachToRoot為true,直接在添加到root的時候就已經生效了; 如果root=null,那該布局文件中指定的布局參數直接被忽略了,沒有意義了,因為我們從attachToRoot這個名字也可以看出來,是對root而言的,如果root不存在,那就沒有意義了。 還有要使button的布局參數生效的最簡單辦法是直接把root指定為main_layout的根布局,即` root=(LinearLayout) findViewById(R.id.main_layout);` `layoutInflater.inflate(R.layout.button_layout, root);` 注意這里指定了root之后不需要再調用addview**”。 ![](https://img.kancloud.cn/56/a4/56a4890cc352832f16c87934629fe68d_997x141.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看