版权声明:本文为博主原创文章,转载请注明。 https://blog.csdn.net/qq_34698126/article/details/69364699
看过很多解决方式,但都会出现无法获取焦点的问题,但合适的只有一种,并且百试不爽,下面会详细介绍:
1、adapter里的关键代码
有两个edit,一个name一个price
@Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder; if (convertView == null) { convertView = LayoutInflater.from(context).inflate(R.layout.chat_creat_order_item, null); viewHolder = new ViewHolder(convertView); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } final ChatOrderBean bean = list.get(position); //This is important. Remove TextWatcher first. if (viewHolder.parts_name.getTag() instanceof TextWatcher) { viewHolder.parts_name.removeTextChangedListener((TextWatcher) viewHolder.parts_name.getTag()); } if (viewHolder.parts_price.getTag() instanceof TextWatcher) { viewHolder.parts_price.removeTextChangedListener((TextWatcher) viewHolder.parts_price.getTag()); } TextWatcher nameWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (TextUtils.isEmpty(s)) { bean.setAccessoriesName(""); } else { bean.setAccessoriesName(s.toString()); } } }; TextWatcher priceWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (TextUtils.isEmpty(s)) { bean.setPrice(0.0); } else { bean.setPrice(Double.valueOf(s.toString())); } } }; viewHolder.parts_name.addTextChangedListener(nameWatcher); viewHolder.parts_price.addTextChangedListener(priceWatcher); viewHolder.parts_name.setTag(nameWatcher); viewHolder.parts_price.setTag(priceWatcher); return convertView; }
上面代码基本可以实现,但还会弹出键盘重新刷新getview的问题,下面解决:
2、在manifest里对应activity设置:
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"