package org.droidplanner.android.widgets.adapterViews; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.MAVLink.common.msg_global_position_int; import org.droidplanner.android.R; import org.droidplanner.android.fragments.LocatorListFragment; import org.droidplanner.android.utils.file.IO.TLogReader; import org.droidplanner.android.utils.file.IO.TLogReader.Event; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Locale; /** * MissionItem Adapter for the MissionItem horizontal list view. This adapter * updates the content of the list view item's view based on the mission item * type. */ public class LocatorItemAdapter extends RecyclerView.Adapter<LocatorItemAdapter.ViewHolder> { // Provide a reference to the views for each data item public static class ViewHolder extends RecyclerView.ViewHolder { final View viewContainer; final TextView timeView; public ViewHolder(View container, TextView timeView) { super(container); this.viewContainer = container; this.timeView = timeView; } } private static final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss", Locale.US); private int selectedPosition = -1; private final List<Event> msgList; private final LocatorListFragment.OnLocatorListListener listener; public LocatorItemAdapter(List<TLogReader.Event> list, LocatorListFragment.OnLocatorListListener listener) { this.msgList = list; this.listener = listener; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_locator_list_item, parent, false); final TextView timeView = (TextView) view.findViewById(R.id.timeView); return new ViewHolder(view, timeView); } @Override public void onBindViewHolder(ViewHolder holder, final int position) { final Event msgEvent = msgList.get(position); final View container = holder.viewContainer; container.setActivated(isSelected(position)); container.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setSelection(position); if (listener != null) { if (isSelected(position)) { listener.onItemClick((msg_global_position_int) msgEvent.getMavLinkMessage()); } else { listener.onItemClick(null); } } } }); Date eventDate = new Date(msgEvent.getTimestamp()); holder.timeView.setText(sdf.format(eventDate)); } @Override public int getItemCount() { return msgList.size(); } private void setSelection(int selection) { if (selection == selectedPosition) clearSelection(); else selectedPosition = selection; notifyDataSetChanged(); } private boolean isSelected(int position) { return selectedPosition == position; } public void clearSelection() { selectedPosition = -1; } }