前端开发技术

RecyclerView踩坑记录

2017-12-17  本文已影响6人  Aron1001

1,adapter中绑定数据的时候如果使用了if一定要加else,否则数据会错乱;

if() {

} else{

}

2,adapter中创建volder方法中inflate布局时,要采用如下的写法:

inflate(R.layout.item_list, parent, false)

不能采用如下的写法:

inflate(R.layout.item_list, null)

两者的区别在于:

三个参数的infalte为item_list指定了一个父布局,使得item_list的跟节点的width和height属性有效,而第二种写法没有为item_list指定任何的父布局,其根节点的属性自然没有意思。如果想让item_list的根节点有效,又不想让它处于某一容器中,就采用第一种写法。

3,adapter中使用EditText和CheckBox数据错乱的问题

holder.priceEdit.setTag(bean);//任意控件都可以设置tag
...
//使用时:
((SalePriceBean)holder.priceEdit.getTag()).xx
public interface OnItemEditTextChangedListener {
        void onEditTextAfterTextChanged(String num, int position);
    }
public interface OnItemCheckChangeListener {
        void onItemCheckChange(boolean isChecked, int position);
    }

...

et.addTextChangedListener(new TextWatcher() {
            ...
            @Override
            public void afterTextChanged(Editable s) {
                if (!TextUtils.isEmpty(s.toString())&&(!s.toString().equals("-"))) {
                    mListener.onEditTextAfterTextChanged(s.toString(), helper.getLayoutPosition());
                }
            }
        });

 checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                item.isSelect = !item.isSelect;
              onItemCheckChangeListener.onItemCheckChange(item.isSelect, helper.getLayoutPosition());
            }
        });

4,Item布局时根节点的height要设置为wrap_content,否则会出现每个item布局充满屏幕的现象。

上一篇 下一篇

猜你喜欢

热点阅读