问题,左边的RecyclerView 第一次打开添加item 是对的 ,清除后 ,再次添加item就会先添加原来删除的item
原码有点多,请大神指教!谢谢
Item布局
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="ordermenu"
type="com.example.lisax.onetreefour.OrderMenu"/>
<import type="com.example.lisax.onetreefour.OrderMenu"/>
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="400dp"
android:layout_height="72dp"
>
<TextView
android:id="@+id/row_Number"
android:layout_width="36dp"
android:layout_height="52dp"
android:layout_marginStart="16dp"
android:gravity="center_vertical|center_horizontal"
android:text="000"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/goods_Name"
android:layout_width="150dp"
android:layout_height="52dp"
android:layout_marginStart="16dp"
android:gravity="left|center_vertical"
android:text="@{ordermenu.goodsName}"
app:layout_constraintStart_toEndOf="@+id/row_Number"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/taste_Name"
android:layout_width="130dp"
android:layout_height="20dp"
android:layout_marginStart="36dp"
android:gravity="top|left"
android:text="@{ordermenu.tasteName}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/row_Number" />
<TextView
android:id="@+id/menu_Count"
android:layout_width="50dp"
android:layout_height="52dp"
android:layout_marginStart="16dp"
android:gravity="center_vertical|center_horizontal"
android:text="@{String.valueOf(ordermenu.count) }"
app:layout_constraintStart_toEndOf="@+id/taste_Name"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/menu_Unit"
android:layout_width="50dp"
android:layout_height="20dp"
android:layout_marginStart="16dp"
android:gravity="top|center_horizontal"
android:text="@{ordermenu.unit}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/taste_Name" />
<TextView
android:id="@+id/menu_Amount"
android:layout_width="90dp"
android:layout_height="52dp"
android:layout_marginEnd="16dp"
android:gravity="center_vertical|center_horizontal"
android:text="@{String.valueOf(ordermenu.count * ordermenu.price) }"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/menu_Special"
android:layout_width="50dp"
android:layout_height="20dp"
android:layout_marginEnd="32dp"
android:text="menu_Special"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</android.support.constraint.ConstraintLayout>
</layout>
Adapter码 查看集合中的数据是对的
public class OrderMenuAdapter extends RecyclerView.Adapter<OrderMenuAdapter.OrderMenuHolder> implements View.OnClickListener{
ListItemOrdermenuBinding mListItemOrdermenuBinding;
private List<OrderMenu> mOrderMenus;
private OnItemClickListener mOnItemClickListener;
private NotifyObserver mNotifyObserver;
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public void onClick(View v) {
if (mOnItemClickListener != null)
mOnItemClickListener.onItemClick(v, (int) v.getTag());
}
public interface OnItemClickListener{
void onItemClick(View view,int position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
this.mOnItemClickListener = listener;
}
public OrderMenuAdapter(List<OrderMenu> orderMenus){
this.mOrderMenus=orderMenus;
}
@NonNull
@Override
public OrderMenuHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
mListItemOrdermenuBinding=DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.list_item_ordermenu,parent,false);
mListItemOrdermenuBinding.getRoot().setOnClickListener(this);
return new OrderMenuHolder(mListItemOrdermenuBinding);
}
@Override
public void onBindViewHolder(@NonNull OrderMenuHolder orderMenuHolder, int position) {
orderMenuHolder.getBinding().setOrdermenu(mOrderMenus.get(position));
mListItemOrdermenuBinding.getRoot().setTag(position);
orderMenuHolder.getBinding().executePendingBindings();
}
@Override
public int getItemCount() {
return mOrderMenus.size();
}
public void add(OrderMenu orderMenu, int position)
{
mOrderMenus.add(orderMenu);
notifyItemInserted(position);
}
public void RemoveAll(){
mOrderMenus.clear();
notifyDataSetChanged();
}
public void ItemChange(int position){
notifyItemChanged(position);
}
class OrderMenuHolder extends RecyclerView.ViewHolder{
public OrderMenuHolder(ListItemOrdermenuBinding listItemOrdermenuBinding){
super(listItemOrdermenuBinding.getRoot());
}
public void setBinding(ListItemOrdermenuBinding listItemOdermenuBinding){
mListItemOrdermenuBinding=listItemOdermenuBinding;
}
public ListItemOrdermenuBinding getBinding(){return mListItemOrdermenuBinding;}
}
}