0
私はRecyclerViewのBig Nerd Ranch tutorial on RecyclerViewチュートリアルに従っています。私はいくつかのことを変えました。私が直面している問題は、行をクリックすると問題になります。その特定のものは強調表示されますが、他の「選択されていない行」は表示されません。行の選択の前にRecyclerViewのCardViewの行を強調表示
を選択した後、私はホルダーに私のクリックを実装しています。
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;
}
}
が重複する可能性:http://stackoverflow.com/questions/38829808/recyclerview-on-click-highlight-and-make-others
たぶん、ソースコードをチェックして、あなたは興味の何かを見つけることができます-not-highlighted/38831493#38831493 – JCDecary
いいえ、私はそうは思わない。上記のチュートリアルで使用したライブラリに固有のものです。 –