Динамическое добавление EditText и CheckBox в RecyclerVIew
В приложении надо реализовать динамическое добавление items в RecyclerView При нажатии добавления, пояявляется новый итем, далее я его заполняю и после нажатия добавления нового итема создаются два итема но данные с первого стираются . Как исправить в чем проблема?
Adapter class
public class AdapterCheck extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements DragItemTouchHelper.MoveHelperAdapter {
public Context ctx;
public List<Check> items = new ArrayList();
public OnStartDragListener mDragStartListener = null;
public OnItemClickListener mOnItemClickListener;
public interface OnItemClickListener {
void onItemClick(View view, Check social, int i);
}
public interface OnStartDragListener {
void onStartDrag(RecyclerView.ViewHolder viewHolder);
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.mOnItemClickListener = onItemClickListener;
}
public AdapterCheck(Context context, List<Check> items) {
this.items = items;
this.ctx = context;
}
public void setDragListener(OnStartDragListener onStartDragListener) {
this.mDragStartListener = onStartDragListener;
}
public class OriginalViewHolder extends RecyclerView.ViewHolder implements DragItemTouchHelper.TouchViewHolder {
public CheckBox checkBox;
public ImageView bt_move;
public View lyt_parent;
public com.google.android.material.textfield.TextInputEditText name;
public OriginalViewHolder(View view) {
super(view);
this.bt_move = (ImageView) view.findViewById(R.id.remove_check);
this.name = (com.google.android.material.textfield.TextInputEditText) view.findViewById(R.id.check_title);
this.checkBox = (CheckBox) view.findViewById(R.id.checkbox);
this.lyt_parent = view.findViewById(R.id.lyt_parent);
}
public void onItemSelected() {
this.itemView.setBackgroundColor(ctx.getResources().getColor(R.color.grey));
}
public void onItemClear() {
this.itemView.setBackgroundColor(0);
}
}
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
return new OriginalViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.check_item, viewGroup, false));
}
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int i) {
if (viewHolder instanceof OriginalViewHolder) {
OriginalViewHolder originalViewHolder = (OriginalViewHolder) viewHolder;
Check social = items.get(i);
originalViewHolder.name.setText(social.getTitle());
originalViewHolder.checkBox.setChecked(social.isCheck());
originalViewHolder.lyt_parent.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(view, items.get(i), i);
}
}
});
originalViewHolder.bt_move.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View view, MotionEvent motionEvent) {
if (MotionEventCompat.getActionMasked(motionEvent) != 0 || mDragStartListener == null) {
return false;
}
mDragStartListener.onStartDrag(viewHolder);
return false;
}
});
}
}
public int getItemCount() {
return this.items.size();
}
public boolean onItemMove(int i, int i2) {
Collections.swap(this.items, i, i2);
notifyItemMoved(i, i2);
return true;
}
}
MainActivity
List<Check> checkList;
private AdapterCheck adapterCheck;
private RecyclerView recyclerViewCheck;
private ItemTouchHelper mItemTouchHelper;
private void initComponentCheck() {
recyclerViewCheck = (RecyclerView) findViewById(R.id.recyclerView_check);
recyclerViewCheck.setLayoutManager(new LinearLayoutManager(this));
recyclerViewCheck.setHasFixedSize(true);
checkList = new ArrayList<>();
adapterCheck = new AdapterCheck(this, checkList);
recyclerViewCheck.setAdapter(this.adapterCheck);
adapterCheck.setOnItemClickListener(new AdapterCheck.OnItemClickListener() {
@Override
public void onItemClick(android.view.View view, Check social, int i) {
}
});
adapterCheck.setDragListener(new AdapterCheck.OnStartDragListener() {
public void onStartDrag(RecyclerView.ViewHolder viewHolder) {
mItemTouchHelper.startDrag(viewHolder);
}
});
mItemTouchHelper = new ItemTouchHelper(new DragItemTouchHelper(this.adapterCheck));
mItemTouchHelper.attachToRecyclerView(this.recyclerViewCheck);
findViewById(R.id.add_check).setOnClickListener(new android.view.View.OnClickListener() {
@Override
public void onClick(android.view.View v) {
Check mLog = new Check();
mLog.setTitle("");
mLog.setCheck(false);
checkList.add(mLog);
}
});
}