<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >最近寫了個Android開源庫「[BaseRecyclerViewAdapterHelper](http://blog.csdn.net/cym492224103/article/details/51171802)」集成了很多常見需求的解決方案,希望大家多多star哦~! #效果如何? ![多個布局item](http://upload-images.jianshu.io/upload_images/972352-6daf57c7a1449c46.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![頭部+尾部](http://upload-images.jianshu.io/upload_images/972352-1a81cb5f8875733b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) #如何使用? ##多個不同布局 ``` public class MultipleItemAdapter extends BaseQuickAdapter<String> { private final int TEXT_TYPE = 1; private int mTextLayoutResId; public MultipleItemAdapter(Context context, List data, int... layoutResId) { super(context, layoutResId[0], data); mTextLayoutResId = layoutResId[1]; } @Override protected int getDefItemViewType(int position) { if (position % 2 == 0) return TEXT_TYPE; return super.getDefItemViewType(position); } @Override protected BaseViewHolder onCreateDefViewHolder(ViewGroup parent, int viewType) { if (viewType == TEXT_TYPE) return new TextViewHolder(getItemView(mTextLayoutResId, parent)); return super.onCreateDefViewHolder(parent, viewType); } @Override protected void onBindDefViewHolder(BaseViewHolder holder, String item) { if (holder instanceof TextViewHolder) holder.setText(R.id.tv, item); } @Override protected void convert(BaseViewHolder helper, String item) { helper.setImageUrl(R.id.iv, item); } public class TextViewHolder extends BaseViewHolder { public TextViewHolder(View itemView) { super(itemView.getContext(), itemView); } } } ``` ##添加頭部尾部 ``` mQuickAdapter.addHeaderView(getView()); mQuickAdapter.addFooterView(getView()); ``` #原理分析 >如果需要定義多個不同類型的布局,需要知道以下幾點: - 重寫getItemViewType()方法,根據需求規則給出不同的type值。 - 在onCreateViewHolder()方法里面根據不同的type來創建不同的ViewHolder - 在onBindViewHolder()里面根據不同holder的類型來賦予相對于的數據 - 如果有額外布局(如:頭部尾部)需要修改getItemCount()方法的返回數量 ##多個不同的布局的實現(三部曲) 1.重寫了```getDefItemViewType()```方法,其實也就是父類的```getItemViewType()```里面的方法,如上所說,根據頁面需求,做出規則,因為上面的UI是一個TextView一個ImageView交替的來,所以就寫了個這樣規則的 ```if (position % 2 == 0)```保證他們交替著顯示。 2.type搞定了,接下來就是調用```onCreateDefViewHolder()```了,根據上面的type來創建不同的ViewHolder, 3.然后再接下來調用```onBindDefViewHolder()```,根據上面創建的ViewHolder的類型不同來進行相應的賦值。 ##添加頭部和尾部(額外布局) 在上面的基礎之上再重寫```getItemCount()```在原本數據量上加上根據額外布局的數量,代碼如下 ``` @Override public int getItemCount() { int i = mNextLoadEnable ? 1 : 0; return mData.size() + i + getHeaderViewsCount() + getFooterViewsCount(); } ``` 注意:**如果是添加頭部** 那就必須在原```onBindViewHolder()```里面position-頭部數量,因為不減去的話,那么數據就會從第二條開始遍歷,所以要注意! ``` int index = position - getHeaderViewsCount(); convert(baseViewHolder, mData.get(index)); ``` ##意外收獲 ![國際友人的加盟](http://upload-images.jianshu.io/upload_images/972352-592f7882f1a2e736.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) **國際友人的加盟!** >每次收獲一點點,后續還會擴展更多功能,供大家使用及學習「[BaseRecyclerViewAdapterHelper](http://blog.csdn.net/cym492224103/article/details/51171802)」。
                  <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>

                              哎呀哎呀视频在线观看