package kr.co.icontrols.iotplatform.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.ArrayList;

import kr.co.icontrols.iotplatform.DataClass.KakaoLocationInfo;
import kr.co.icontrols.iotplatform.R;

public class KaKaoLoctionAdapter extends BaseAdapter {
    // Adapter에 추가된 데이터를 저장하기 위한 ArrayList
    private ArrayList<KakaoLocationInfo> listViewItem = new ArrayList<>();
    private int selectedIndex;

    // ListviewTotalAdapter 생성자
    public KaKaoLoctionAdapter() {
        selectedIndex = -1;
    }

    // Adapter에 사용되는 데이터의 개수를 리턴. : 필수 구현
    @Override
    public int getCount() {
        return listViewItem.size();
    }

    // position에 위치한 데이터를 화면에 출력하는데 사용될 View를 리턴. : 필수 구현
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final int pos = position;
        final Context context = parent.getContext();

        // "listview_item" Layout을 inflate하여 convertView 참조 획득.
        if (convertView == null) {

        }

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.listview_kakao_location_info_item, parent, false);

        TextView txtAddressName = convertView.findViewById(R.id.txtAddressName);
        txtAddressName.setText(listViewItem.get(position).address_name);

        if(position == selectedIndex) {
            txtAddressName.setSelected(true);
        } else {
            txtAddressName.setSelected(false);
        }

        return convertView;
    }

    // 지정한 위치(position)에 있는 데이터와 관계된 아이템(row)의 ID를 리턴. : 필수 구현
    @Override
    public long getItemId(int position) {
        return position;
    }

    /**
     * 지정한 포지션의 아이템 획득.
     * @param position
     * @return
     */
    @Override
    public Object getItem(int position) {
        return listViewItem.get(position);
    }

    public ArrayList<KakaoLocationInfo> getAllItem() {
        return listViewItem;
    }

    /**
     * 아이템 추가 함수.
     * @param item
     */
    public void addItem(KakaoLocationInfo item) {
        listViewItem.add(item);
    }

    public void setSelected(int pos) {
        selectedIndex = pos;
        notifyDataSetChanged();
    }

    /**
     * 리스트에 활당된 모든 아이템에 대한 메모리 반환.
     */
    public void removeAllItem() {
        selectedIndex = -1;

        if (listViewItem != null) {
            listViewItem.clear();
        }
    }
}
