package kr.co.sl.safeportcar.activity;

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.sl.safeportcar.R;
import kr.co.sl.safeportcar.data.GpsInfo;

public class WorkListAdapter extends BaseAdapter {

    private ArrayList<GpsInfo> itemList;

    private Context context;

    public WorkListAdapter(Context context) {
        this.context = context;
        itemList = new ArrayList<>();
    }

    @Override
    public int getCount() {
        return itemList.size();
    }

    @Override
    public Object getItem(int position) {
        return itemList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View cView = convertView;
        ViewHolder holder;
        if (cView == null) {
            cView = LayoutInflater.from(context).inflate(R.layout.list_item_work, parent, false);
            holder = new ViewHolder(cView);
            cView.setTag(holder);

        } else {
            holder = (ViewHolder) cView.getTag();
        }

        GpsInfo item = itemList.get(position);
        holder.indexText.setText("" + (itemList.size() - position));
        holder.timeText.setText(item.getTime());
        String location = item.getLat() + "\n" + item.getLon();
        holder.locationText.setText(location);
        holder.speedText.setText(String.valueOf(item.getSpeed()));
        holder.directText.setText(String.valueOf(item.getDirect()));
        return cView;
    }

    public void addItem(GpsInfo gpsInfo) {
        itemList.add(0, gpsInfo);
        notifyDataSetChanged();
    }

    class ViewHolder {

        TextView indexText;
        TextView timeText;
        TextView locationText;
        TextView speedText;
        TextView directText;

        public ViewHolder(View view) {
            indexText = view.findViewById(R.id.workListItemIndexText);
            timeText = view.findViewById(R.id.workListItemTimeText);
            locationText = view.findViewById(R.id.workListItemLocationText);
            speedText = view.findViewById(R.id.workListItemSpeedText);
            directText = view.findViewById(R.id.workListItemDirectText);
        }
    }
}

addItem 에서 
itemList.add(0, gpsInfo);
add(gpsInfo) -> add(0,gpsInfo) 로 바꿔줍니다.

 

하지만 Index 번호가 아래로 쌓입니다.

 

holder.indexText.setText("" + (itemList.size() - position));

위와 같이 텍스트를 변경하시면 리스트가 0번 index로 계속 쌓이고 해당 인덱스의 포지션이 +1씩 증가하면서 쌓이게 됩니다.

 

리스트를 아에 맨 아래부터 쌓고 싶으신 분들은 

listView 가 있는 xml에

android:stackFromBottom="true"

를 추가하시면 되겠습니다.

+ Recent posts