package de.tum.in.tumcampusapp.fragments; import android.annotation.SuppressLint; import android.database.Cursor; import android.graphics.Color; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.support.v4.widget.SimpleCursorAdapter; import android.support.v7.widget.CardView; 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 android.widget.TextView; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import de.tum.in.tumcampusapp.R; import de.tum.in.tumcampusapp.auxiliary.Const; import de.tum.in.tumcampusapp.auxiliary.Utils; import de.tum.in.tumcampusapp.managers.StudyRoomGroupManager; import de.tum.in.tumcampusapp.models.tumcabe.StudyRoom; /** * Fragment for each study room group. Shows study room details in a list. */ public class StudyRoomGroupDetailsFragment extends Fragment implements SimpleCursorAdapter .ViewBinder { private int mStudyRoomGroupId; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments().containsKey(Const.STUDY_ROOM_GROUP_ID)) { mStudyRoomGroupId = getArguments().getInt(Const.STUDY_ROOM_GROUP_ID); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_item_detail, container, false); Cursor studyRoomCursor = new StudyRoomGroupManager(getActivity()).getStudyRoomsFromDb (mStudyRoomGroupId); RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.fragment_item_detail_recyclerview); recyclerView.setAdapter(new StudyRoomAdapter(studyRoomCursor)); final LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(layoutManager); recyclerView.setHasFixedSize(true); return rootView; } private class StudyRoomAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private final SimpleCursorAdapter mCursorAdapter; StudyRoomAdapter(Cursor studyRoomCursor) { mCursorAdapter = createStudyRoomCursorAdapter(studyRoomCursor); mCursorAdapter.setViewBinder(StudyRoomGroupDetailsFragment.this); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mCursorAdapter.newView(getContext(), mCursorAdapter.getCursor(), parent); return new RecyclerView.ViewHolder(view) { }; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { mCursorAdapter.getCursor().moveToPosition(position); mCursorAdapter.bindView(holder.itemView, getContext(), mCursorAdapter.getCursor()); CardView cardView = (CardView) holder.itemView.findViewById(R.id.card_view); TextView text = (TextView) holder.itemView.findViewById(android.R.id.text2); int color; if (text.getText().toString().contains(getString(R.string.free))) { color = Color.rgb(200, 230, 201); } else { color = Color.rgb(255, 205, 210); } cardView.setCardBackgroundColor(color); } @Override public int getItemCount() { return mCursorAdapter.getCount(); } } @NonNull private SimpleCursorAdapter createStudyRoomCursorAdapter(final Cursor studyRoomCursor) { return new SimpleCursorAdapter(getActivity(), R.layout.two_line_list_item, studyRoomCursor, studyRoomCursor.getColumnNames(), new int[]{android.R.id.text1, android.R.id.text2, R.id.text3}, 0) { @Override public boolean isEnabled(int position) { // disable onclick return false; } }; } @SuppressLint("SimpleDateFormat") @Override public boolean setViewValue(View view, Cursor cursor, int columnIndex) { StudyRoom studyRoom = StudyRoomGroupManager.getStudyRoomFromCursor(cursor); if (view.getId() == android.R.id.text1) { TextView tv = (TextView) view; tv.setText(studyRoom.name); } else if (view.getId() == android.R.id.text2) { StringBuilder stringBuilder = new StringBuilder(studyRoom.location).append("<br>"); if (studyRoom.occupiedTill.compareTo(new Date()) < 0) { stringBuilder.append(getString(R.string.free)); } else { stringBuilder.append(getString(R.string.occupied)) .append(" <b>") .append(new SimpleDateFormat("HH:mm", Locale.getDefault()).format(studyRoom.occupiedTill)) .append("</b>"); } TextView tv = (TextView) view; tv.setText(Utils.fromHtml(stringBuilder.toString())); } else if (view.getId() == R.id.text3) { TextView tv = (TextView) view; tv.setText(studyRoom.code); } return true; } }