2016-07-26 12 views
-1

私はリストアダプターを使用して作成したリストビューにEditTextを持っています。私はEditTextでテキストを入力して戻るボタンを押すたびにすべての変更が失われますが、 (リストビューがない)他の場所でEditTextを実行すると、すべて正常に動作します(すべての変更が保持されます)。なぜこの問題が発生していますか?Android:Textedit入力が戻るボタンを押したときに失われる

のEditTextコード>>

<EditText 
    android:id="@+id/edit_card_list_editText" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="@dimen/editbox_cursor_margin" 
    android:layout_marginRight="@dimen/editbox_cursor_margin" 
    android:layout_marginTop="@dimen/edit_card_list_mid_gap" 
    android:background="@color/white" 
    android:ems="10" 
    android:enabled="true" 
    android:fontFamily="@string/roboto_light_font" 
    android:inputType="textNoSuggestions" 
    android:textSize="@dimen/forty_eight_font" > 

</EditText> 

Listadapterコード>>

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View rowView = convertView; 
    boolean convertViewWasNull = false; 

    if(rowView == null){ 

     rowView = inflator.inflate(R.layout.edit_card_list_layout, parent, false); 
     convertViewWasNull = true; 

    } 

    TextView titleview = (TextView) rowView.findViewById(R.id.edit_card_list_title); 
    EditText detailview = (EditText) rowView.findViewById(R.id.edit_card_list_editText); 

    if(title.get(position) != null){ 
     titleview.setText(title.get(position).toString()); 

     } 
    if(detail.get(position) != null){ 
     detailview.setText(detail.get(position).toString()); 
     }else{ 
      detailview.setText(""); 
     } 

    detailview.requestFocus(); 
    //InputMethodManager inputManager = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE); 
    //inputManager.restartInput(detailview); 

    if(convertViewWasNull){ 

     detailview.addTextChangedListener(new GenericTextWatcher(detailview)); 

    } 

    detailview.setTag(title.get(position).toString()); 
    return rowView; 
} 

private class GenericTextWatcher implements TextWatcher{ 

     private EditText view; 
     private GenericTextWatcher(EditText view) { 
      this.view = view; 
     } 

     public void afterTextChanged(Editable editable) { 

      text = editable.toString(); 
      //save the value for the given tag : 
      EditCardListAdapter.this.editTextValues.put((String) view.getTag(),text); 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      // TODO Auto-generated method stub 

     } 
    } 

答えて

0

私はあなたがフィールドに編集を追跡しているが、あなたが作成するときに、それらの編集を使用していない参照リストアイテムビュー:

 if (detail.get(position) != null) { 
      String orig = detail.get(position).toString(); 
      String edited = editTextValues.get(title.get(position).toString()); 
      detailview.setText(edited != null ? edited : orig); 
     } else { 
      detailview.setText(""); 
     } 
関連する問題