package org.droidplanner.android.fragments; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.MAVLink.common.msg_global_position_int; import org.droidplanner.android.R; import org.droidplanner.android.activities.LocatorActivity; import org.droidplanner.android.widgets.adapterViews.LocatorItemAdapter; public class LocatorListFragment extends Fragment { private RecyclerView recyclerView; private LocatorItemAdapter adapter; private OnLocatorListListener listener; public interface OnLocatorListListener { void onItemClick(msg_global_position_int message); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_locator_list, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); recyclerView = (RecyclerView) view.findViewById(R.id.locator_item_recycler_view); // use this setting to improve performance if you know that changes // in content do not change the layout size of the RecyclerView recyclerView.setHasFixedSize(true); //use a linear layout manager final RecyclerView.LayoutManager recyclerLayoutMgr = new LinearLayoutManager(getActivity() .getApplicationContext(), LinearLayoutManager.HORIZONTAL, false); recyclerView.setLayoutManager(recyclerLayoutMgr); final LocatorActivity activity = (LocatorActivity) getActivity(); adapter = new LocatorItemAdapter(activity.getLastPositions(), listener); recyclerView.setAdapter(adapter); } @Override public void onAttach(Activity activity) { super.onAttach(activity); if (!(activity instanceof OnLocatorListListener)) { throw new IllegalStateException("Parent activity must implement " + OnLocatorListListener.class.getName()); } listener = (OnLocatorListListener) activity; } @Override public void onStart() { super.onStart(); updateViewVisibility(); } public void notifyDataSetChanged() { adapter.clearSelection(); adapter.notifyDataSetChanged(); updateViewVisibility(); } public void updateViewVisibility() { View view = getView(); if (adapter != null && view != null) { if (adapter.getItemCount() > 0) view.setVisibility(View.VISIBLE); else view.setVisibility(View.INVISIBLE); } } }