您好,登錄后才能下訂單哦!
這篇文章主要介紹RecyclerView如何實現(xiàn)仿支付寶應用管理,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
效果圖
從上面的圖片中我們可以把布局分為三種類型,其中第一種布局le是
第二種布局類型是:
第三種布局類型
使用RecyclerView加載多種布局,很多人都會,但是這里每排顯示的子應用數(shù)量是不同的,而所有的數(shù)據(jù)都是來自同一個數(shù)據(jù)集合,而且所有的都是現(xiàn)實都是動態(tài)生成,所以不可能寫死。這個時候是時候來了解GridLayoutManager的setSpanSizeLookup()方法了。具體使用方法我就不介紹啦,貼上官方文檔鏈接
核心代碼:
mLayoutManager = new GridLayoutManager(this, 4); mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { ApplicationBean applicationBean = mDataList.get(position); if (applicationBean.getType() == ApplicationBean.Type.TypeOne) { return 4; } else if (applicationBean.getType() == ApplicationBean.Type.TypeTwo) { return 2; } else if (applicationBean.getType() == ApplicationBean.Type.TypeThree) { return 1; } else { return 0; } } }); mRecyclerView.setLayoutManager(mLayoutManager); mAdapter = new ApplicationAdapter(mDataList, this); mRecyclerView.setAdapter(mAdapter);
adapter代碼
package com.huangjie.recyclerview; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; /** * Created by huangjie on 2017/11/12. */ public class ApplicationAdapter extends RecyclerView.Adapter { //布局類型 private static final int VIEW_TYPE_ONE = 1; private static final int VIEW_TYPE_TWO = 2; private static final int VIEW_TYPE_THREE = 3; private LayoutInflater inflater; private Context mContext; private ArrayList<ApplicationBean> mDataList; public ApplicationAdapter(ArrayList<ApplicationBean> mDataList, Context context) { this.mDataList = mDataList; mContext = context; inflater = LayoutInflater.from(mContext); } @Override public int getItemViewType(int position) { if (mDataList.get(position).getType() == ApplicationBean.Type.TypeOne) { return VIEW_TYPE_ONE; } else if (mDataList.get(position).getType() == ApplicationBean.Type.TypeTwo) { return VIEW_TYPE_TWO; } else if (mDataList.get(position).getType() == ApplicationBean.Type.TypeThree) { return VIEW_TYPE_THREE; } else { return 0; } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { RecyclerView.ViewHolder viewHolder = null; switch (viewType) { case VIEW_TYPE_ONE: viewHolder = new ViewHolderOne(inflater.inflate(R.layout.item_one, parent, false)); break; case VIEW_TYPE_TWO: viewHolder = new ViewHolderTwo(inflater.inflate(R.layout.item_two, parent, false)); break; case VIEW_TYPE_THREE: viewHolder = new ViewHolderThree(inflater.inflate(R.layout.item_three, parent, false)); break; } return viewHolder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (getItemViewType(position)) { case VIEW_TYPE_ONE: Log.e("huangjie", mDataList.get(position).getTitle()); ((ViewHolderOne) holder).title.setText(mDataList.get(position).getTitle()); break; case VIEW_TYPE_TWO: ((ViewHolderTwo) holder).title.setText(mDataList.get(position).getName()); ((ViewHolderTwo) holder).information.setText(mDataList.get(position).getInformation()); ((ViewHolderTwo) holder).icon.setImageDrawable( mContext.getResources().getDrawable(mDataList.get(position).getIcon())); break; case VIEW_TYPE_THREE: ((ViewHolderThree) holder).title.setText(mDataList.get(position).getName()); ((ViewHolderThree) holder).icon.setImageDrawable( mContext.getResources().getDrawable(mDataList.get(position).getIcon())); break; } } @Override public int getItemCount() { return mDataList.size(); } /** * 第一種布局類型ViewHolder */ public static class ViewHolderOne extends RecyclerView.ViewHolder { private TextView title; public ViewHolderOne(View itemView) { super(itemView); title = (TextView) itemView.findViewById(R.id.text); } } /** * 第二種布局類型ViewHolder */ public static class ViewHolderTwo extends RecyclerView.ViewHolder { private ImageView icon; private TextView title; private TextView information; public ViewHolderTwo(View itemView) { super(itemView); icon = (ImageView) itemView.findViewById(R.id.image); title = (TextView) itemView.findViewById(R.id.title); information = (TextView) itemView.findViewById(R.id.infor); } } /** * 第三種布局類型viewholder */ public static class ViewHolderThree extends RecyclerView.ViewHolder { private ImageView icon; private TextView title; public ViewHolderThree(View itemView) { super(itemView); icon = (ImageView) itemView.findViewById(R.id.image); title = (TextView) itemView.findViewById(R.id.title); } } }
以上是“RecyclerView如何實現(xiàn)仿支付寶應用管理”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。