1. 程式人生 > >安卓解決listview的item巢狀多個edittext的問題

安卓解決listview的item巢狀多個edittext的問題

看過很多解決方式,但都會出現無法獲取焦點的問題,但合適的只有一種,並且百試不爽,下面會詳細介紹:

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"