2011-11-24 8 views
20

私はEditTextに問題があります。私は、POSに新しいリスト項目を追加する最初の項目をクリックするとリストビューのAndroid EditText - キーボード

public class AppSettingActivity extends ListActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     adapter = new RowTextViewAdapter(this); 
     adapter.addRowView("account", "arrowDw"); 
     adapter.addRowView("password", "arrowDw"); 
     setListAdapter(adapter); 
    } 

... 

    protected void onListItemClick(ListView listView, View view, int position, long id) { 
    switch (position) { 
     case 0: accIsEditable = adapter.setEditable(position); break; 
     case 1: 
      if(accIsEditable) { 
            //TODO do something.. 
       break; 
      } 
      pwIsEditable = adapter.setEditable(position); 
      break; 
      ... 
    } 
} 

public class RowTextViewAdapter extends BaseAdapter { 

... 

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

    ViewHolder holder = null; 

    if (rowTitles.get(position).equals("edit")) { 
     if(et == null){ 
      et = new EditText(activity); 
      et.setText("Test"); 
     } 
     return et; 
    } 
    else { 
     convertView = new TextRow(activity); 
     holder = new ViewHolder(((TextRow) convertView).getTextView(), ((TextRow) convertView).getImageView()); 
     convertView.setTag(holder); 
     holder.getTextView().setText(StringManager.getInstance().getText(rowTitles.get(position), activity)); 
     holder.getImageView().setImageBitmap(assetController.getBitmap(additiveIcons.get(position) + ".png", null)); 
     return convertView; 
    } 
    } 
} 

ListActivity:私は、次のアダプタを使用します。 1(pos:0,1,2、...)である。 EditTextフィールドがリストに追加されました。

ListView: 
----------------------------   -------------------------  
Account     v   Account    ^ 
---------------------------- ==> -------------------------  
Passowrd     v   [::::::::EditText:::::::]  
----------------------------   ------------------------- 
//more..        Password    v 
----------------------------   ------------------------- 
             //more.. 
             ------------------------- 

私はEditTextフィールドに今クリックした場合、それは仮想キーボードを表示し、EditTextのフォーカスを失いました。私は再びクリックしてフォーカスを得ます。しかし、私が何かを書くと、テキストはEditTextフィールドにしか表示されません。私はそれをタップしている間は頻繁には書いていません...

このアップデートの問題を解決するにはどんな考えですか?これは問題が残っている場合は

+0

これはこの問題のように顕著に聞こえる:http://stackoverflow.com/questions/6918494/edit-text-in-listactivity- listview-looses-focus-when-keyboard-up-up 希望しています:-) – atraudes

+0

まあ、私もフォーカスの問題があります。私はそれを試してみました: 'addTextChangedListener' - >デバッグは正しい - 正しいテキストを表示します。 – Javatar

+0

しかし、私はどのように例外を除いてテキスト( 'EditText.setText(" new listers text ")')を設定するか分かりません。 私はEditTextに再びFOCUSを設定する方法が見つかりませんでした。私ができることは、 'getInstance()。notifyDataSetChanged()'を呼び出すことですが、その後は必ず手動でEditTextフィールドに手動でクリックしなければならず、1文字しか書きません。 'EditText.requestFocus ) 'キーボードが表示されず、EditTextのフォーカスもなくなります – Javatar

答えて

38

は、この項目を見てみましょう:Focusable EditText inside ListView

この変更が役立つことがあります。リストビューへ

変更:mainfest.xmlでの活動に

<ListView 
    android:id="@android:id/list" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:descendantFocusability="beforeDescendants" 
    /> 

変更:あなたがマニフェスト活動やXMLでandroid:windowSoftInputMode="stateAlwaysHidden"を使用する場合

<activity android:name= ".yourActivity" android:windowSoftInputMode="adjustPan"/> 
+0

ありがとうございます。拒否 – Javatar

+1

ありがとう、これは魅力のように働いた:) – Proxy32

+8

'アンドロイド:windowSoftInputMode =" adjustPan "'だけ私のために働く。 – Pang

1

いくつかの時間が、その時はそれがキーボードフォーカスを失うことになります。だからまずXMLとマニフェストでそのプロパティをチェックしてください。これらのオプションを追加してサイドアクティビティのファイルをマニフェストandroid:windowSoftInputMode="adjustPan"に追加し、このプロパティをxmlのlistviewに追加しますandroid:descendantFocusability="beforeDescendants"

+0

非常に簡単な答え –

関連する問題