Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.myapp.test.brands;
- import android.content.Context;
- import android.support.v7.widget.RecyclerView;
- import android.text.TextUtils;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import com.tonicartos.superslim.GridSLM;
- import com.tonicartos.superslim.LayoutManager;
- import com.tonicartos.superslim.LinearSLM;
- import ru.myapp.test.R;
- /**
- * Created by Lucifer on 05.05.2015.
- */
- public class RecyclerBrandsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
- private static final int VIEW_TYPE_HEADER = 0x01;
- private static final int VIEW_TYPE_CONTENT = 0x00;
- private static final int LINEAR = 0;
- private BrandModel data;
- private int mHeaderDisplay;
- private boolean mMarginsFixed;
- private Context mContext;
- public RecyclerBrandsAdapter(Context context, int headerMode,BrandModel data){
- mContext = context;
- mHeaderDisplay = headerMode;
- this.data=data;
- String lastHeader = "";
- int sectionManager = -1;
- int headerCount = 0;
- int sectionFirstPosition = 0;
- for (int i = 0; i < data.brands.size(); i++) {
- String header = data.brands.get(i).brandswelove_name.substring(0, 1);
- if (!TextUtils.equals(lastHeader, header)) {
- sectionManager = (sectionManager + 1) % 2;
- sectionFirstPosition = i + headerCount;
- lastHeader = header;
- headerCount += 1;
- data.brands.add(i,new BrandModel.Brand(header,
- data.brands.get(i).brandswelove_id,
- data.brands.get(i).loveCurrentCustomer,
- true,
- sectionManager,
- sectionFirstPosition));
- data.brands.get(i+1).isHeader=false;
- data.brands.get(i+1).sectionManager=sectionManager;
- data.brands.get(i+1).sectionFirstPosition=sectionFirstPosition;
- }else{
- data.brands.get(i).isHeader=false;
- data.brands.get(i).sectionManager=sectionManager;
- data.brands.get(i).sectionFirstPosition=sectionFirstPosition;
- }
- }
- }
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- View view;
- if (viewType == VIEW_TYPE_HEADER) {
- view = LayoutInflater.from(parent.getContext()).inflate(R.layout.header, parent, false);
- return new BrandsViewHolderHeader(view);
- } else {
- view = LayoutInflater.from(parent.getContext()).inflate(R.layout.brands_item, parent, false);
- return new BrandViewHolder(view);
- }
- }
- @Override
- public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
- final BrandModel.Brand item = data.brands.get(position);
- final View itemView = holder.itemView;
- if (holder instanceof BrandViewHolder) {
- BrandViewHolder viewHolder=(BrandViewHolder) holder;
- if(item.loveCurrentCustomer==null){
- viewHolder.bindItem(item.brandswelove_name, R.drawable.dislike);
- }else{
- viewHolder.bindItem(item.brandswelove_name,R.drawable.like);
- }
- }else if(holder instanceof BrandsViewHolderHeader){
- BrandsViewHolderHeader viewHolder=(BrandsViewHolderHeader) holder;
- viewHolder.bindItem(item.brandswelove_name);
- }
- GridSLM.LayoutParams lp = GridSLM.LayoutParams.from(itemView.getLayoutParams());
- // Overrides xml attrs, could use different layouts too.
- if (item.isHeader) {
- lp.headerDisplay = mHeaderDisplay;
- if (lp.isHeaderInline() || (mMarginsFixed && !lp.isHeaderOverlay())) {
- lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
- } else {
- lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
- }
- lp.headerEndMarginIsAuto = !mMarginsFixed;
- lp.headerStartMarginIsAuto = !mMarginsFixed;
- }
- lp.setSlm(LinearSLM.ID);
- lp.setFirstPosition(item.sectionFirstPosition);
- itemView.setLayoutParams(lp);
- }
- @Override
- public int getItemCount() {
- return data.brands.size();
- }
- /*
- public void setHeaderDisplay(int headerDisplay) {
- mHeaderDisplay = headerDisplay;
- // notifyHeaderChanges();
- }
- public void setMarginsFixed(boolean marginsFixed) {
- mMarginsFixed = marginsFixed;
- notifyHeaderChanges();
- }
- private void notifyHeaderChanges() {
- for (int i = 0; i < data.brands.size(); i++) {
- BrandModel.Brand item = data.brands.get(i);
- if (item.isHeader) {
- notifyItemChanged(i);
- }
- }
- }
- */
- @Override
- public int getItemViewType(int position) {
- return data.brands.get(position).isHeader ? VIEW_TYPE_HEADER : VIEW_TYPE_CONTENT;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement