2016-12-18 3 views
1

editTextにテキストを入力できるリストを作成しています.となり、ユーザ入力はsetVisibility()メソッドを使用して同じ場所でtextViewに変換されます。しかし、何が起こっているのかは、editTextとtextViewが切り替えているのですが、戻ってくる前のほんの1秒です。どのようにして永久に切り替えることができますか?setVisibility()メソッドを使用してEditTextが非表示にならない

私のカスタムアダプタークラス。 uはINVISIBLEので、同じ場所での使用に

choreTextEdit.setVisibility(View.GONE); 
choreTextStatic.setVisibility(View.VISIBLE); 

をsetvisibilityを使用したい場合にも

private LayoutInflater inflater = null ; 

public CustomAdapter(Context context, ArrayList choreText) { 
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    adapterContext = context ; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
     if(convertView==null) { 
      convertView = inflater.inflate(R.layout.custon_listview_row,parent, false); 
      //now use convertview 
      } 
    } 

をあなたのコンストラクタで:私が見つけたあなたのコードの問題を確認した後

import android.content.Context; 
import android.support.annotation.NonNull; 
import android.text.InputType; 
import android.view.KeyEvent; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.inputmethod.EditorInfo; 
import android.view.inputmethod.InputMethodManager; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.ArrayList; 

class CustomAdapter extends ArrayAdapter{ 

    public CustomAdapter(Context context, ArrayList choreText) { 
     super(context, R.layout.custon_listview_row, choreText); 
    } 

    @NonNull 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater myInflater = LayoutInflater.from(getContext()); 
     View customView = myInflater.inflate(R.layout.custon_listview_row, parent, false); 

     String singleListItem = (String) getItem(position); 
     final TextView choreTextStatic = (TextView) customView.findViewById(R.id.textView_ID); 
     choreTextStatic.setVisibility(View.INVISIBLE); 
     final EditText choreTextEdit = (EditText) customView.findViewById(R.id.editText_ID); 
     //set user input in editText field 
     choreTextEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() { 


      @Override 
      public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
       boolean handled = false; 
       if (actionId == EditorInfo.IME_ACTION_DONE) { 
        // TODO do something 
        if (v != null) { 
         InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
         imm.hideSoftInputFromWindow(v.getWindowToken(), 0); 

        } 

        choreTextEdit.setVisibility(View.INVISIBLE); 
        choreTextStatic.setVisibility(View.VISIBLE); 

        handled = true; 
       } 
       return handled; 
      } 
     }); 

     ImageButton imageButton = (ImageButton) customView.findViewById(R.id.imageButton_ID); 

     choreTextEdit.setText(singleListItem, TextView.BufferType.EDITABLE); 



     imageButton.setImageResource(R.drawable.clock); 



     return customView; 
    } 
} 

答えて

0

まだ空間をブロックするでしょう

setOnEditorActionListenerではtrue/falseを正しく渡します。それ以外の場合はアクションは呼び出されません。

meditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 

      yourcalc(); 

      return true; 
     } 
     return false; 
    } 
}); 
関連する問題