相关疑难解决方法(0)

RecyclerView.Adapter 通过位置获取ItemView

在我的 Adapter 中,我调用LayoutManager.ChildAt(position)获取itemview,但我得到的视图不是匹配的itemview,当我调用时notifyItemChanged(position),应用程序崩溃:

E/AndroidRuntime: FATAL EXCEPTION: mainProcess: com.paicaifu.riches, PID: 8502
Java.lang.IllegalArgumentException: Called attach on a child which is not detached: ViewHolder{adb21588 position=0 id=-1, oldPos=-1, pLpos:-1}
at Android.support.v7.widget.RecyclerView$5.attachViewToParent(RecyclerView.java:654)
at android.support.v7.widget.ChildHelper.attachViewToParent(ChildHelper.java:239)
at android.support.v7.widget.RecyclerView.addAnimatingView(RecyclerView.java:1107)
at android.support.v7.widget.RecyclerView.animateChange(RecyclerView.java:3270)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3088)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2917)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3283)
…
at android.view.Choreographer.doCallbacks(Choreographer.java:574) 
Run Code Online (Sandbox Code Playgroud)

谢谢,这是我在适配器中的代码:

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, 
    final int position) {
    if (holder instanceof CardHolder) {
       final CardHolder cardHolder = (CardHolder) holder;
       cardHolder.rootview.setOnClickListener(this);
       cardHolder.rootview.setTag(position);
       cardHolder.rootview.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View …
Run Code Online (Sandbox Code Playgroud)

android-adapter android-recyclerview

2
推荐指数
1
解决办法
3857
查看次数