ListView + EditText

Bug:快速滑动崩溃  java.lang.IllegalArgumentException: parameter must be a descendant of this view

解决方案:

Append a ScrollListener to your Activity, when listView start scrolling, clear current focus.
给ListView添加滚动监听OnScrollListener,滚动时清除焦点。

public class GoodManageListActivity OnDataViewListener, AbsListView.OnScrollListener {

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
                         int visibleItemCount, int totalItemCount) {
        // do nothing
    }

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        if (SCROLL_STATE_TOUCH_SCROLL == scrollState) {
            View currentFocus = getCurrentFocus();
            if (currentFocus != null) {
                currentFocus.clearFocus();
            }
        }
    }
    private void initView() {
        mGoodsList = (ListView) findViewById(R.id.seller_goods_listView);
        mGoodsList.setOnScrollListener(this);
    }
}

Bug:限制数字的输入格式
解决方案:
比如限制输入内容小数位最多4个,整数位最多6个。
InputFilter[] filters = new InputFilter[]{new InputFilter() {
    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        if (dstart > 0) {
            if (dest.toString().contains(".")) {
                int num = dest.toString().length() - dest.toString().indexOf(".") - 1;
                if (num >= 2) {
                    source = "";
                }
            }else {
                if (dest.toString().length() > 5 && !source.equals(".")){
                    source = "";
                }
            }
        }
        return source;
    }
}};
holder.item_child_unit_price.setFilters(filters);

Bug:EditText修改保存数据错位。
解决方案:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    ......
    priceWatch = new CustTextWatch(holder) {
        @Override
        public void afterTextChanged(Editable s, ViewHolder holder) {
            int p = (Integer) holder.new_price.getTag();
            if (p == position) {
                cachePrice(s, p, holder);
            }
        }
    };

    holder.new_price.addTextChangedListener(priceWatch);
    ......
}
private abstract class CustTextWatch implements TextWatcher {
    private ViewHolder mViewHolder;

    public CustTextWatch(ViewHolder holder) {
        this.mViewHolder = holder;
    }

    @Override
    public void afterTextChanged(Editable s) {
        afterTextChanged(s, mViewHolder);
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    public abstract void afterTextChanged(Editable s, ViewHolder holder);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值