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); }