RecyclerView显示错乱问题,请指教!

a841093111 2018-11-10 08:50:03


问题,左边的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;}
}
}





...全文
306 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
解决没???

80,330

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧