2017-02-24 91 views
-1

我在RecyclerView的每个项目中都有一个删除按钮。它工作正常,但view下面RecyclerView不跟进。从RecyclerView删除项目,但下面的视图不能调整

我尝试按照Android RecyclerView addition & removal of items但它仍然没有工作

这里我的代码

public ViewHolder(View itemView) { 
     super(itemView); 

     btnDelete = (ImageButton)itemView.findViewById(R.id.detail_delete); 
     btnDelete.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     removeAt(getAdapterPosition()); 
    } 

    private void removeAt(int position) { 
     scheduleList.remove(position); 
     notifyItemRemoved(position); 
     notifyItemRangeChanged(position, scheduleList.size()); 
    } 
+0

后只删除调用notifyDataSetChanged(); – user2025187

+0

感谢它的工作。但是当我删除第一行时,下面的行中的数据仍然在同一个地方。 – eawarnong

回答

0

我认为问题就出在这里...

notifyItemRangeChanged(position, scheduleList.size()); 

你在技术上说谎RecyclerView和适配器说你已经删除了位于指定位置之后的所有项目......这就是最后一个参数的用途......要删除的项目数量是inc正确的,因为你传递的是整个列表的大小。这是什么最后一个参数代表...从的javadoc ...

ITEMCOUNT - 从数据集

基本解除的项目数,你将需要删除该行的removeAt方法所以你只通知观察者曾...

private void removeAt(int position) { 
    scheduleList.remove(position); 
    notifyItemRemoved(position); 
} 

,如果它仍然无法正常工作,那么你可能有另一个问题,其他地方

+0

谢谢,但它不起作用。现在我用'notifyDataSetChanged()'代替 – eawarnong

0

添加函数notifyDataSetChanged()。我正面临同样的问题

@Override 
    public void onClick(View v) { 
     removeAt(getAdapterPosition()); 
     adapter.notifyDataSetChanged(); //adapter is your card adapter 
    } 
+0

谢谢!但是您是否必须在该视图中输入任何数据?我有一个新的问题,那就是数据依然存在。 – eawarnong

+0

你能显示一个截图或代码片段吗? – Chariston