I am trying to load a list into RecyclerView and show the first line of the list as selected. I achieved this using the following code:
@Override public void onBindViewHolder(NavigationDrawerAdapter.ViewHolder holder, final int position) { if (!mNavClassrooms.get(position).equals("")) { holder.mTextViewClassroom.setText(mNavClassrooms.get(position)); // Setting the Text with the array of our Titles holder.mRelLayClassroom.setSelected(mSelectedItems.get(position, false)); /* The following code was written to make the first item in the Classroom list as selected. It leads to the item always being selected and hence has been commented out. */ if(position == 0 && intOldSelectedItem == -1){ holder.mRelLayClassroom.setSelected(mSelectedItems.get(position, true)); intOldSelectedItem = 0; mSelectedView = holder.mRelLayClassroom.getChildAt(position); mSelectedItems.put(position, true); } else{ holder.mRelLayClassroom.setSelected(mSelectedItems.get(position, false)); } } else { holder.mTextViewClassroom.setText("No classes found"); holder.mTextViewClassroom.setPadding(40, 0, 0, 0); } holder.mRelLayClassroom.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mSharedPreferences = mContext.getSharedPreferences(Constants.AAPREFERENCES, Context.MODE_PRIVATE); String strClassroomValue = mNavClassrooms.get(position); int strClassroomName = mNavClassroomNames.get(position); SharedPreferences.Editor editor = mSharedPreferences.edit(); editor.putString(Constants.CLASSROOM_VALUE, strClassroomValue); editor.putInt(Constants.CLASSROOM_NAME, strClassroomName); editor.commit(); /* We are storing the position of the selected row in the SparseBooleanArray. We delete it in case another row has been selected. */ if (mSelectedItems.get(position, false)) { /* Do nothing */ } else { mSelectedItems.put(position, true); /* Making sure that the delete code is called only if some view is selected */ if (mSelectedView != null) { mSelectedView.setSelected(false); mSelectedItems.delete(intOldSelectedItem); view.setSelected(false); } mSelectedView = view; intOldSelectedItem = position; view.setSelected(true); } }
However, now the first line is always selected. I can not cancel the selection. I can't seem to work.
I mentioned the following answer to achieve most of this feature.
stack overflow
Any help would be appreciated.
android android-recyclerview recycler-adapter
Bot Jul 13 '16 at 9:19 2016-07-13 09:19
source share