0

friends。Android:リストビューをEditTextから更新する

私は、Stateパターンを実装するアプリケーションモジュールを持っています。アイデアは次のとおりです。 1.ユーザーは、日付入り - NEの状態へ> 2.画面の変更を動的にListViewコントロールを膨張し

問題があるいくつかのデータでリストを埋めるためにユーザーに要求している私はからnotifyDataSetChange()を呼び出すとき2番目の方法を更新すると、EditTextビューはその機能をもうやりたくありません。

これはlogcatの文字列です。問題の鍵が入っていると思います。

09-10 10:33:38.937 26954から26954/D /リストビューcom.example.android.turtleinfo:ここで変更アクセシビリティフォーカス位置= 0

はすべてのためのコードです。

1.マイ状態パターンスーパークラス

public abstract class ScreenState 
    { 

     public BuilderActivity activity; 



     public ScreenState(BuilderActivity activity) { 
      this.activity = activity; 
      //initializeScreen(activity); 
     } 

     public abstract void initializeScreen(Activity activity); 
     public abstract void switchState(); 
     public abstract void updateText(View view); 


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

         activity.state.updateText(v); 

         return true; 
        } 
        return false; 
       } 
      }); 
     } 


    } 

2.初期画面の実装とにupdateData方法

@Override 
    public void initializeScreen(Activity activity) { 

     ((BuilderActivity) activity).editText.setHint("Name"); 
     addTextWatcher(((BuilderActivity) activity).editText); 
     textView = (TextView)activity.getLayoutInflater().inflate(R.layout.schedule_text_style, null); 
     textView.setHeight(100); 
     screenText = "End Date: " + new SimpleDateFormat("MMMM dd, yyyy", Locale.ENGLISH).format(((BuilderActivity) activity).data.getEndDate())+"\n\n"; 

     textView.setText(screenText+"\n"); 
     ((BuilderActivity) activity).scheduleLayout.addView(textView); 

     ((BuilderActivity) activity).data.setNames(new ArrayList<String>()); 

     lv = (ListView)activity.getLayoutInflater().inflate(R.layout.listview_text_style, null); 
     listItems = new ArrayList<>(); 

     adapt = new ArrayAdapter<>(super.activity, R.layout.schedule_text_style, listItems); 
     lv.setAdapter(adapt); 
     ((BuilderActivity) activity).scheduleLayout.addView(lv); 


    } 

@Override 
public void updateText(View view) { 

    String text = activity.editText.getText().toString(); 

    if (text.length() >= 2) { 
     if (!activity.data.names.contains(text)) { 
      activity.data.addToList(text); 



      listItems.add(text); 
      adapt.notifyDataSetChanged(); 

      activity.editText.setText(""); 
      counter++; 
      activity.editText.setText(""); 

     } else { 
      Toast.makeText(activity, "same names are not allowed", 
       Toast.LENGTH_LONG).show(); 
      ((BuilderActivity) activity).editText.setText(""); 
     } 
    } 
    else 
    { 
     Toast.makeText(activity, "name should contain 2 or more symbols", 
       Toast.LENGTH_LONG).show(); 
     ((BuilderActivity) activity).editText.setText(""); 
    } 

} 

それがどのように見えるかこれはデバイス。

1.最初の挿入は

2.

enter image description here [OK]と[秒であり、さらにinsertionasは不可能です。私は、次をクリックした場合OK softkeyboardボタンをenter image description here

3. NEXTボタンに最初に切り替わり、のEditTextは '/ n' のボタンにフォーカスを失い、何も起こりませんが、NEXTボタンスイッチ。誰もが知っていれば

enter image description here

だから、、、私はworngやっているものを、助けてください!

ありがとうございます!

答えて

1

あなたの問題は

public void addTextWatcher(EditText text) 

機能です。 imeActionIdとアンドロイド:imeOptionsは属性、プラスsetOnEditorActionListener()メソッド、すべてのTextView/EDITTEXT上アンドロイドで

ルック。

これを使用して、キーボードボタンのテキストを変更することもできます。

mEditText.setImeActionLabel("Your text", KeyEvent.KEYCODE_ENTER); 
関連する問題