RealmSearchAdapter不重新显示视图

AND*_*849 5 android realm android-adapter recycler-adapter android-recyclerview

我有一个gridview项目,我可以增加或减少其值,发生的是当我更改项目的值并向下滚动屏幕并向后滚动我所做的更改已经消失,如果我向下滚动几次,我可以看到我再次做出的改变,我在这里失踪了什么?

public class SearchItemViewAdapter extends RealmSearchAdapter<Itens, SearchItemViewAdapter.ViewHolder> implements RealmChangeListener {

    public SparseBooleanArray mSparseBooleanArray;

    public SearchItemViewAdapter(Activity context, Realm realm, String filterColumnName) {
        super(context, realm, filterColumnName);
        mSparseBooleanArray = new SparseBooleanArray();

    }

    @Override
    public void onChange() {
        notifyDataSetChanged();
    }

    public RealmList<Itens> getCheckedItems() {
        RealmList<Itens> mTempArry = new RealmList<>();

        for (int i = 0; i < realmResults.size(); i++) {
            if (mSparseBooleanArray.get(i)) {
                mTempArry.add(realmResults.get(i));
            }
        }


        return mTempArry;
    }


    public class ViewHolder extends RealmSearchViewHolder {

        public SearchItemView itemView;

        public ViewHolder(FrameLayout container, TextView footerTextView) {
            super(container, footerTextView);
        }

        public ViewHolder(SearchItemView itemView) {
            super(itemView);
            this.itemView = itemView;
        }
    }

    @Override
    public ViewHolder onCreateRealmViewHolder(ViewGroup viewGroup, int viewType) {
        ViewHolder vh = new ViewHolder(new SearchItemView(viewGroup.getContext()));
        return vh;
    }

    @Override
    public void onBindRealmViewHolder(ViewHolder viewHolder, int position) {
        final Itens item = realmResults.get(position);
        viewHolder.itemView.bind(item);

        viewHolder.itemView.check.setTag(position);

        viewHolder.itemView.check.setChecked(mSparseBooleanArray.get(position));
        viewHolder.itemView.check.setOnCheckedChangeListener(mCheckedChangeListener);

    }

    CompoundButton.OnCheckedChangeListener mCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            mSparseBooleanArray.put((Integer) buttonView.getTag(), isChecked);
        }
    };

    @Override
    public ViewHolder onCreateFooterViewHolder(ViewGroup viewGroup) {
        View v = inflater.inflate(R.layout.footer_view, viewGroup, false);
        return new ViewHolder(
                (FrameLayout) v,
                (TextView) v.findViewById(R.id.footer_text_view));
    }

    @Override
    public void onBindFooterViewHolder(ViewHolder holder, int position) {
        super.onBindFooterViewHolder(holder, position);
        holder.itemView.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                    }
                }
        );


    }


}
Run Code Online (Sandbox Code Playgroud)

SearchItemView

 public class SearchItemView extends RelativeLayout {

       @Bind(R.id.codigo)
        TextView codigo;

        @Bind(R.id.nomeproduto)
        TextView nome;

        @Bind(R.id.preco)
        TextView preco;

        @Bind(R.id.valor)
        TextView itemq;

        @Bind(R.id.more)
        ImageView more;

        @Bind(R.id.less)
        ImageView less;

        @Bind(R.id.check)
        CheckBox check;


        final int nStart = 0;
        final int nEnd = 10000000;

        public SearchItemView(Context context) {
            super(context);
            init(context);
        }

        private void init(Context context) {
            inflate(context, R.layout.add_itens_adapter, this);
            ButterKnife.bind(this);
        }

        public void bind(Itens item) {
            nome.setText(item.getNome());
            codigo.setText(item.getCodigo());
            preco.setText(item.getPreco());




            more.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String getString = String.valueOf(itemq.getText());
                    int curent = Integer.parseInt(getString);
                    if (v == more) {
                        if (curent < nEnd) {
                            curent++;
                            itemq.setText(String.valueOf(curent));
                        }
                    }


                }
            });

            less.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String getString = String.valueOf(itemq.getText());
                    int curent = Integer.parseInt(getString);
                    if (v == less) {
                        if (curent > nStart) {
                            curent--;
                            itemq.setText(String.valueOf(curent));
                        }
                    }
                }
            });


        }
    }
Run Code Online (Sandbox Code Playgroud)