package com.smf.location;

import android.content.Context;
import android.graphics.Point;
import android.os.Build;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.List;

public class CityAdapter extends RecyclerView.Adapter<CityAdapter.ItemHolder> {
    final int HEADER = 0;
    final int ITEM = 1;
    Context context;
    List<City> list;
    int width;
    String gps;
    AdapterView.OnItemClickListener mOnItemClickListener;
    public CityAdapter(Context context,List<City> list) {
        this.context = context;
        this.list = list;
        gps = "";
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        int width = 0;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
            Point size = new Point();
            wm.getDefaultDisplay().getSize(size);
            width = size.x;
        }else{
            width = wm.getDefaultDisplay().getWidth();
        }
        this.width = width;
    }
    public void setOnItemClickLitener(AdapterView.OnItemClickListener mOnItemClickListener) {
        this.mOnItemClickListener = mOnItemClickListener;
    }

    @Override
    public ItemHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if(viewType == HEADER){
            View v = LayoutInflater.from(context).inflate(R.layout.item_cityheader,null);
            v.setLayoutParams(new LinearLayout.LayoutParams(width, ViewGroup.LayoutParams.WRAP_CONTENT));
            return new ItemHolder(v,viewType);
        }else{
            View v = LayoutInflater.from(context).inflate(R.layout.item_city,null);
            v.setLayoutParams(new LinearLayout.LayoutParams(width, ViewGroup.LayoutParams.WRAP_CONTENT));
            return new ItemHolder(v,viewType);
        }
    }

    @Override
    public void onBindViewHolder(ItemHolder holder, int position) {
        if(position == 0){
            holder.position = -1;
            holder.tv_city.setText(gps);
        }else{
            int mPosition = position-1;
            holder.position = mPosition;
            if(mPosition>0 && list.get(mPosition-1).getLetter().equals(list.get(mPosition).getLetter())){
                holder.l_letter.setVisibility(View.GONE);
            }else{
                holder.l_letter.setVisibility(View.VISIBLE);
            }
            holder.tv_letter.setText(list.get(mPosition).getLetter());
            holder.tv_city.setText(list.get(mPosition).getCity());
        }

    }
    public void setGps(String gps){
        this.gps = gps;
        notifyItemChanged(0);
    }

    @Override
    public int getItemCount() {
        return list.size()+1;
    }

    @Override
    public int getItemViewType(int position) {
        if(position == 0){
            return HEADER;
        }else{
            return ITEM;
        }
    }

    class ItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        int position;
        LinearLayout l_letter;
        TextView tv_letter;
        TextView tv_city;
        public ItemHolder(View itemView,int viewType) {
            super(itemView);
            if(viewType == HEADER){
                tv_city = itemView.findViewById(R.id.tv_city);
                itemView.setOnClickListener(this);
            }else{
                l_letter = itemView.findViewById(R.id.l_letter);
                tv_letter = itemView.findViewById(R.id.tv_letter);
                tv_city = itemView.findViewById(R.id.tv_city);
                itemView.setOnClickListener(this);
            }
        }
        @Override
        public void onClick(View view) {
            if(mOnItemClickListener!=null){
                mOnItemClickListener.onItemClick(null,view,position,position);
            }
        }
    }
}
