android - RecyclerView onBindViewHolder 位置设置错误

标签 android android-recyclerview

起初,我的 RecyclerView 项目没问题,但在滚动时,项目显示在错误的位置,例如:项目 6 显示在位置 67。尽管 onClick 监听器和 getAdapterPosition() 工作正常并显示正确的项目。为什么?

import android.content.Context;
import android.graphics.Typeface;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.neganet.darotabii.R;
import com.neganet.darotabii.beans.headers_Bean;
import java.util.List;
public class FSecAdapter2 extends RecyclerView.Adapter<FSecAdapter2.mViewHolder> {

    private static List<headers_Bean> items_t;
    private static int secNo;
    private Typeface font;
    private boolean showSoreName;
    private static Context mContext;
    private static String сolorString;

  private static String fSubjectText="";
    private static Static_Datas static_datas;
    private static QDataGetter dataGetter;

public FSecAdapter2(List<headers_Bean> t_items, Context cnt, int secNo) {
            setHasStableIds(true);

            this.mContext=cnt;
            this.items_t = t_items;
            this.static_datas=new Static_Datas(mContext);
            this.secNo=secNo;
         }

        public static class mViewHolder extends RecyclerView.ViewHolder  implements View.OnClickListener {
            private OnTitleClickListener titClickListener;

            static TextView title;
            public mViewHolder(View itemView) {
                super(itemView);
                    this.title = (TextView) itemView.findViewById(R.id.title2);
                    this.title.setTypeface(static_datas.get_titr_1_Font());
                    this.title.setOnClickListener(this);
                    this.titClickListener=(OnTitleClickListener) FSecAdapter2.mContext;
            }
            @Override
            public void onClick(View v) {
                    titClickListener.onTitleClick(v,items_t.get(getAdapterPosition()).serial+"*"+items_t.get(getAdapterPosition()).titr);
            }

        }

        @Override
        public mViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View itemView;
            itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.titles_item, parent, false);
            mViewHolder mVH=new mViewHolder(itemView);
            return mVH;
        }

        @Override
        public void onBindViewHolder(mViewHolder holder, int position) {
            final headers_Bean curHbean=this.items_t.get(position);
            try {

                holder.title.setText(static_datas.fa_Ye_Ke(curHbean.titr));
           } catch (Exception e) {
                e.printStackTrace();
            }

        }

        @Override
        public int getItemCount() {
            return items_t.size();
        }



        public interface OnTitleClickListener {
            public void onTitleClick(View v, String serial);
        }

     public void updateData(headers_Bean newHead){
         items_t.add(items_t.size(),newHead);
         notifyItemInserted(items_t.size()-1);
     }}

在 fragment 中:

        mAdapter = new FSecAdapter2(titList,getActivity(),secNo);
    final LinearLayoutManager mLayoutManager = new LinearLayoutManager(this.getActivity());
    mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    titRecycle.setLayoutManager(mLayoutManager);
    titRecycle.setItemAnimator(new DefaultItemAnimator());
    titRecycle.setAdapter(mAdapter);

最佳答案

public void onBindViewHolder()

添加

holder.setIsRecyclable(false);

关于android - RecyclerView onBindViewHolder 位置设置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38182223/

相关文章:

android - 如何在应用程序为后台 FCM 时检索通知消息 intent.getExtras()

android - FragmentStateAdapter 在调用 notifyDataSetChanged 时不调用 createFragment

android - 在循环 Recyclerview android 中捕捉中心 onItemClick

java - RecyclerView 没有 LayoutManager android.support.v7.widget.RecyclerView

android - 更改 RecyclerView 滚动条宽度

java - 通过蓝牙在 Android 应用程序和 PC 应用程序之间发送敏感数据

即使在正确设置 abiFilters 之后,Android Studio 也会忽略 ndk-build 的 APP_ABI

android - 收到消息后,Android 上的 Firebase Messaging 突然开始崩溃

android - RecyclerView 不刷新

android - Android 中的 RecyclerView -- set view gone 没用