<分区>
我正在尝试从 ListView 中删除一个未开始特定文本“Dev”的项目。但是当我删除一个项目并通过 notifydatasetChanged() 刷新回收列表时,应用程序崩溃了。这个问题已经被问过,我已经看到了所有的解决方案,但我找不到合适的解决方案。
EvelistAdapter.java
public class EvelistAdater extends RecyclerView.Adapter<EvelistAdater.ViewHolder> {
Context cxt;
ArrayList<Dbbean> adapterlist;
int row_index;
public EvelistAdater(Context cxt, ArrayList<Dbbean> list) {
adapterlist=list;
this.cxt=cxt;
Log.d("LIst count",""+adapterlist.size());
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.scanlistadp, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
if(adapterlist.get(position).blename.startsWith("Dev")) {
holder.tv_country.setText(adapterlist.get(position).blename);
}else{
removeAt(position);
}
}
@Override
public int getItemCount() {
return adapterlist.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
TextView tv_country;
RelativeLayout layout;
ImageView setting;
public ViewHolder(View view) {
super(view);
tv_country = (TextView)view.findViewById(R.id.tshirtname);
setting = (ImageView) view.findViewById(R.id.setting);
layout = (RelativeLayout)view.findViewById(R.id.layout);
}
}
public void removeAt(int position) {
adapterlist.remove(position);
notifyDataSetChanged();
}
}
LOGCAT
E/UncaughtException: java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling
at android.support.v7.widget.RecyclerView.assertNotInLayoutOrScroll(RecyclerView.java:2586)
at android.support.v7.widget.RecyclerView$RecyclerViewDataObserver.onItemRangeChanged(RecyclerView.java:4951)
at android.support.v7.widget.RecyclerView$AdapterDataObservable.notifyItemRangeChanged(RecyclerView.java:11371)
at android.support.v7.widget.RecyclerView$AdapterDataObservable.notifyItemRangeChanged(RecyclerView.java:11362)
at android.support.v7.widget.RecyclerView$Adapter.notifyItemChanged(RecyclerView.java:6650)
at com.scanner.com.eve.EvelistAdater.removeAt(EvelistAdater.java:94)
at com.scanner.com.eve.EvelistAdater.onBindViewHolder(EvelistAdater.java:44)
at com.scanner.com.eve.EvelistAdater.onBindViewHolder(EvelistAdater.java:19)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6354)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6387)
at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5343)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5606)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5448)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5444)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2224)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1551)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1511)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:595)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3600)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3329)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3867)
at android.view.View.layout(View.java:16655)
at android.view.ViewGroup.layout(ViewGroup.java:5438)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16655)
at android.view.ViewGroup.layout(ViewGroup.java:5438)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16655)
at android.view.ViewGroup.layout(ViewGroup.java:5438)
at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:636)
at android.view.View.layout(View.java:16655)
at android.view.ViewGroup.layout(ViewGroup.java:5438)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16655)
at android.view.ViewGroup.layout(ViewGroup.java:5438)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16655)
at android.view.ViewGroup.layout(ViewGroup.java:5438)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2895)
at android.view.View.layout(View.java:16655)
at android.view.ViewGroup.layout(ViewGroup.java:5438)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at android.view.ViewR