2016-08-17 30 views
0

私はRecyclerViewのBig Nerd Ranch tutorial on RecyclerViewチュートリアルに従っています。私はいくつかのことを変えました。私が直面している問題は、行をクリックすると問題になります。その特定のものは強調表示されますが、他の「選択されていない行」は表示されません。行の選択の前にRecyclerViewのCardViewの行を強調表示

enter image description here

が行 enter image description here

を選択した後、私はホルダーに私のクリックを実装しています。

public class CustomRecyclerViewHolder extends SwappingHolder implements View.OnClickListener, View.OnLongClickListener { 

     private TextView mMsg1, mMsg2; 
     //private ImageView mAvatarView; 
     private CheckBox mCheckBox; 
     private LinearLayout checkboxHolder; 
     private ImageView mDeleteRow; 
     private CardView cardView; 
     private Category category; 
     private CustomRecyclerViewHolder holder; 

     public CustomRecyclerViewHolder(View itemView) { 
      super(itemView, myFragment.mMultiSelector); 
      mMsg1 = (TextView) itemView.findViewById(R.id.text_view1); 
      mMsg2 = (TextView) itemView.findViewById(R.id.text_view2); 
      //mAvatarView = (ImageView)itemView.findViewById(R.id.avatar_holder); 
      mCheckBox = (CheckBox) itemView.findViewById(R.id.checkbox); 
      checkboxHolder = (LinearLayout) itemView.findViewById(R.id.checkbox_holder); 
      mDeleteRow = (ImageView) itemView.findViewById(R.id.delete_row); 
      cardView = (CardView) itemView.findViewById(R.id.card_holder); 
      itemView.setOnClickListener(this); 
      itemView.setLongClickable(true); 
      itemView.setOnLongClickListener(this); 
     } 

     public void bindCategory(Category category) { 
      this.category = category; 
      mMsg1.setText(category.getName()); 
      mMsg2.setText(category.getDescriptionName()); 
      if (category.getCompleted() == 1) { 
       mCheckBox.setChecked(true); 
       mCheckBox.setVisibility(View.VISIBLE); 
      } else 
       mCheckBox.setChecked(true); 
     } 

     @Override 
     public void onClick(View v) { 

      if (category == null) { 
       return; 
      } 
      checkboxHolder.setVisibility(View.VISIBLE); 
      mCheckBox.setChecked(isChecked); 
      if (!myFragment.mMultiSelector.tapSelection(this)) { 
       //selectCrime(mCrime); 
      } 

     } 

     @Override 
     public boolean onLongClick(View v) { 

      ((AppCompatActivity) mContext).startSupportActionMode(myFragment.mDeleteMode); 
      myFragment.mMultiSelector.setSelected(this, true); 
      return true; 
     } 
    } 

そして、私のフラグメントに私はこれを行う:

public class CustomMultiSelectorCallback extends ModalMultiSelectorCallback { 

     public CustomMultiSelectorCallback(MultiSelector multiSelector) { 
      super(multiSelector); 
     } 

     @Override 
     public boolean onCreateActionMode(ActionMode actionMode, Menu menu) { 
      super.onCreateActionMode(actionMode, menu); 
      actionMode.getMenuInflater().inflate(R.menu.list_item_delete, menu); 
      return true; 
     } 

     @Override 
     public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) { 

      switch (menuItem.getItemId()) { 
       case R.id.menu_item_delete: 
       { 

        for (int i = categoriesArrayList.size(); i >= 0; i--) { 
         if (mMultiSelector.isSelected(i, 0)) { 
          categoryDatabase = new CategoryDatabase(context); 
          Category category = prescriptionsArrayList.get(i); 
          categoryDatabase.deleteCategory(category); 
          categoryRecyclerView.getAdapter().notifyItemRemoved(i); 
         } 
        } 


        categoriesArrayList.clear(); 
        mMultiSelector.clearSelections(); 
        actionMode.finish(); 
        return true; 

       } 
      } 
      return false; 
     } 
    } 
+0

が重複する可能性:http://stackoverflow.com/questions/38829808/recyclerview-on-click-highlight-and-make-others

たぶん、ソースコードをチェックして、あなたは興味の何かを見つけることができます-not-highlighted/38831493#38831493 – JCDecary

+0

いいえ、私はそうは思わない。上記のチュートリアルで使用したライブラリに固有のものです。 –

答えて

関連する問題