package com.fourtails.usuariolecturista.fragments;
import android.content.Context;
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.GestureDetector;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.fourtails.usuariolecturista.MainActivity;
import com.fourtails.usuariolecturista.R;
import com.fourtails.usuariolecturista.utilities.SwipeDismissRecyclerViewTouchListener;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* A simple {@link Fragment} subclass.
*/
public class NotificationsFragment extends Fragment {
private static final int ITEMS_COUNT = 4;
private List<String> mItems;
@Bind(R.id.recyclerView)
RecyclerView mRecyclerView;
private RecyclerView.LayoutManager mLayoutManager;
private RecyclerView.Adapter<CustomViewHolder> mAdapter;
public NotificationsFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_notifications, container, false);
ButterKnife.bind(this, view);
initData();
initRecyclerView();
return view;
}
@Override
public void onResume() {
super.onResume();
// Set title
MainActivity.bus.post(getResources().getString(R.string.toolbarTitleNotificationsFragment));
}
private void initData() {
mItems = new ArrayList<String>();
for (int i = 0; i < ITEMS_COUNT; i++) {
mItems.add("Notificacion " + (i + 1));
}
}
private void initRecyclerView() {
mLayoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter = new RecyclerView.Adapter<CustomViewHolder>() {
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.notification_list
, viewGroup, false);
return new CustomViewHolder(view);
}
@Override
public void onBindViewHolder(CustomViewHolder viewHolder, int i) {
viewHolder.mTextViewNotificationLabel.setText(mItems.get(i));
}
@Override
public int getItemCount() {
return mItems.size();
}
};
mRecyclerView.setAdapter(mAdapter);
SwipeDismissRecyclerViewTouchListener touchListener =
new SwipeDismissRecyclerViewTouchListener(
mRecyclerView,
new SwipeDismissRecyclerViewTouchListener.DismissCallbacks() {
@Override
public boolean canDismiss(int position) {
return true;
}
@Override
public void onDismiss(RecyclerView recyclerView, int[] reverseSortedPositions) {
for (int position : reverseSortedPositions) {
// mLayoutManager.removeView(mLayoutManager.getChildAt(position));
mItems.remove(position);
mAdapter.notifyItemRemoved(position);
}
mAdapter.notifyDataSetChanged();
}
});
mRecyclerView.setOnTouchListener(touchListener);
// Setting this scroll listener is required to ensure that during ListView scrolling,
// we don't look for swipes.
mRecyclerView.setOnScrollListener(touchListener.makeScrollListener());
mRecyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(),
new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Toast.makeText(getActivity(), "Clicked " + mItems.get(position), Toast.LENGTH_SHORT).show();
}
}));
}
private class CustomViewHolder extends RecyclerView.ViewHolder {
private TextView mTextViewNotificationLabel;
private TextView mTextViewNotificationTime;
private TextView mTextViewNotificationContent;
public CustomViewHolder(View itemView) {
super(itemView);
mTextViewNotificationLabel = (TextView) itemView.findViewById(R.id.textViewNotificationItemLabel);
mTextViewNotificationTime = (TextView) itemView.findViewById(R.id.textViewNotificationItemTime);
mTextViewNotificationContent = (TextView) itemView.findViewById(R.id.textViewNotificationItemContent);
}
}
public interface OnItemClickListener {
public void onItemClick(View view, int position);
}
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
private OnItemClickListener mListener;
GestureDetector mGestureDetector;
public RecyclerItemClickListener(Context context, OnItemClickListener listener) {
mListener = listener;
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
return true;
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
View childView = view.findChildViewUnder(e.getX(), e.getY());
if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
mListener.onItemClick(childView, view.getChildPosition(childView));
}
return false;
}
@Override
public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}
}