如何从适配器获取 List size() 并从回收器适配器本身更新 Activity UI?

How to get the List size() from adapter and update Activity UI from recycler Adapter itself?

我的适配器调用中有一个删除按钮,当我按下删除按钮时我想

1.从列表

中删除值

2。更新主列表的大小activity

和。 曾尝试使用我提到的界面,但它不起作用,我很困惑。

所以谁能给我一个最好的方法

我的适配器代码:

@Override
public void onBindViewHolder(final AddLineItem_Adapter.ViewHolder holder, final int position) {
    final AddLineItem_ListView addLineItem_listView = addLineItem_listViews.get(position);

    holder.tv_OrderID.setText(addLineItem_listView.getItemID());
    holder.tv_ProductName.setText(addLineItem_listView.getProductName());
    holder.tv_Quantity.setText(addLineItem_listView.getQuantity());
    holder.tv_UnitPrice.setText(addLineItem_listView.getUnitPrice());
    holder.tv_TotalAmount.setText(addLineItem_listView.getTotalAmount());

    holder.btn_Delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            addLineItem_listViews.remove(position);
            notifyDataSetChanged();
        }
    });
}

我想在 TextView 中更新主要 activity 上的 addLineItem_listView 大小。

使用这个功能

 public void removeAt(int position) {
    list.remove(position);
    notifyItemRemoved(position);
    notifyItemRangeChanged(position, list.size());
}
  • 创建界面..
  • 传递给适配器..
  • 删除后调用接口函数(提供列表大小)

Create interface

public interface ShowDeleted {

void showDeleted(int size);

}

Initialize the interface anonymously in the activity like this

ShowDeleted showDeleted = new ShowDeleted() {
    @Override
    public void showDeleted(int size) {
         // show the changed list size or update UI
    }
};

Pass the interface to the recyclerAdapter

YourAdapter youradpter = new YourAdpater(context,list,showDeleted );

Initialize the constructor of recyclerAdapter like this:-

   public YourAdapter(Context context, YourList yourList, ShowDeleted 
                                                           showDeleted)
     {
            }

holder.onClick do this

holder.btn_Delete.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        addLineItem_listViews.remove(position);
        notifyDataSetChanged();
        this.showDeleted.showDeleted(addLineItem_listViews.size());
    }
});

尝试使用view.setTag(位置)

@Override
public void onBindViewHolder(final AddLineItem_Adapter.ViewHolder holder, final int position) {
    final AddLineItem_ListView addLineItem_listView = addLineItem_listViews.get(position);

    holder.tv_OrderID.setText(addLineItem_listView.getItemID());
    holder.tv_ProductName.setText(addLineItem_listView.getProductName());
    holder.tv_Quantity.setText(addLineItem_listView.getQuantity());
    holder.tv_UnitPrice.setText(addLineItem_listView.getUnitPrice());
    holder.tv_TotalAmount.setText(addLineItem_listView.getTotalAmount());
    holder.btn_Delete.setTag(position)
    holder.btn_Delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            addLineItem_listViews.remove((Integer)v.getTag());
            notifyDataSetChanged();
        }
    });
}

祝你好运!