The open soft keyboard for the ListAdapter contains a view with a string

I have a ListAdapter, which in this case contains one item. This element creates a view that has an EditText.

When the view is displayed, I want to open a soft keyboard to allow the user to edit the field.

I tried calling the getView () function of the adapter:

View edittext = view.findViewById(R.id.EditText01); edittext.requestFocus(); mInputMgr.showSoftInput(edittext, InputMethodManager.SHOW_FORCED); 

which seems to do nothing.

I also tried:

 View edittext = view.findViewById(R.id.EditText01); edittext.requestFocus(); mInputMgr.toggleSoftInput(0, 0); 

This creates, for some mysterious reason, a loop in which the soft keyboard opens and closes with the possibility of repetition.

When I delete requestFocus and click on EditText in the program, it pops up on the keyboard softkey, but as to whether there is requestFocus, showSoftInput does not work.

What should I do?

List Element XML:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:orientation="vertical" android:layout_height="fill_parent" android:focusable="true" android:background="@color/light_blue" > <EditText android:id="@+id/EditText01" android:layout_height="wrap_content" android:text="" android:focusable="true" android:layout_width="fill_parent" android:inputType="textShortMessage"></EditText> </RelativeLayout> 

XML containing ListView:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:orientation="vertical" android:layout_height="fill_parent" > <Button android:text="@+id/Button01" android:id="@+id/Button01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge"/> <ListView android:id="@+id/ListView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/Button01" android:gravity="center_horizontal" /> </RelativeLayout> 

long getView function:

 @Override public View getView(final int position, View convertView, ViewGroup parent) { if (convertView != null){ return convertView; } if (mDialog!=null){ final Choice thisChoice = mDialog.getChoice( position, mContentRes); Log.v(TAG, "DialogAdapter: "+ thisChoice.toString()); View view = thisChoice.getView( mInflater, parent, mFillInput, mDialog); View.OnClickListener listener = new View.OnClickListener() { public void onClick(View v) { if (thisChoice.choiceSingleClick(mDialog)){ Log.i(TAG, "Single Click selected Choice: " + thisChoice.toString()); Log.d(TAG, "getNextInputId: " + Integer.toString( thisChoice.getNextInputId())); mFillInput.renderNext(thisChoice.getNextInputId()); } else{ mFillInput.checkSelectedStatus(); } } }; view.setOnClickListener(listener); View.OnLongClickListener longListener = new View.OnLongClickListener() { public boolean onLongClick(View v) { thisChoice.choiceLongClick(mDialog); return false; } }; view.setOnLongClickListener(longListener); Log.d(TAG, "thisChoice: " + thisChoice); Log.d(TAG, "selected: " + thisChoice.isSelected()); if((position == 0 && mDialog.getSelectedCount() == 0) || thisChoice.isSelected()){ view.requestFocus(); } if (thisChoice.isEnterStringChoice() & position==0){ Log.d(TAG, "Request Focus for StringChoice"); View edittext = view.findViewById(R.id.EditText01); edittext.requestFocus(); //edittext.dispatchTouchEvent(null); //FillInput.mInputMgr.showSoftInput(edittext, InputMethodManager.SHOW_FORCED); //mFillInput.mInputMgr.toggleSoftInput(0, 0); } return view; } else{ return null; } } 
+6
android android-softkeyboard
source share
4 answers

Have you tried using dispatchTouchEvent(android.view.MotionEvent) on an EditText ?

+1
source share

try setting android:focusable="true" in xml or setFocusable(true) in java code in a TextEdit control

0
source share

Try adding android:descendantFocusability="blocksDescendants" to your <RelativeLayout /> . Sometimes this is necessary so that the widgets in the lists fall into the desired focus.

0
source share

Can you try adding <requestFocus /> to your EditText :

 <EditText android:id="@+id/EditText01" android:layout_height="wrap_content" android:text="" android:focusable="true" android:layout_width="fill_parent" android:inputType="textShortMessage"> <requestFocus /> </EditText> 

Or you can right-click on EditText in design mode, select Request Focus . Hope this works ...

0
source share

All Articles