when filtering, enter key hides keyboard and applies filter

This commit is contained in:
Eric House 2021-02-24 20:08:43 -08:00
parent e2b51beb60
commit 5736870357
3 changed files with 52 additions and 14 deletions

View file

@ -30,6 +30,7 @@ import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
@ -58,7 +59,8 @@ import java.util.Arrays;
import java.io.Serializable; import java.io.Serializable;
public class DictBrowseDelegate extends DelegateBase public class DictBrowseDelegate extends DelegateBase
implements View.OnClickListener, View.OnLongClickListener { implements View.OnClickListener, View.OnLongClickListener,
PatTableRow.EnterPressed {
private static final String TAG = DictBrowseDelegate.class.getSimpleName(); private static final String TAG = DictBrowseDelegate.class.getSimpleName();
private static final String DELIM = "."; private static final String DELIM = ".";
private static final boolean SHOW_NUM = false; private static final boolean SHOW_NUM = false;
@ -285,6 +287,7 @@ public class DictBrowseDelegate extends DelegateBase
} }
} // init } // init
@Override
protected void onPause() protected void onPause()
{ {
scrapeBrowseState(); scrapeBrowseState();
@ -458,6 +461,17 @@ public class DictBrowseDelegate extends DelegateBase
return handled; return handled;
} }
//////////////////////////////////////////////////
// PatTableRow.EnterPressed
//////////////////////////////////////////////////
@Override
public boolean enterPressed()
{
hideSoftKeyboard();
useButtonClicked();
return true;
}
private void scrapeBrowseState() private void scrapeBrowseState()
{ {
Assert.assertTrueNR( null != m_browseState ); Assert.assertTrueNR( null != m_browseState );
@ -536,6 +550,7 @@ public class DictBrowseDelegate extends DelegateBase
PatTableRow row = (PatTableRow)child; PatTableRow row = (PatTableRow)child;
m_rows[nFound++] = row; m_rows[nFound++] = row;
row.setOnFocusGained( mFocusGainedProc ); row.setOnFocusGained( mFocusGainedProc );
row.setOnEnterPressed(this);
} }
} }
Assert.assertTrueNR( nFound == m_rows.length ); Assert.assertTrueNR( nFound == m_rows.length );
@ -804,6 +819,14 @@ public class DictBrowseDelegate extends DelegateBase
tv.setText( summary ); tv.setText( summary );
} }
private void hideSoftKeyboard()
{
InputMethodManager imm = (InputMethodManager)
m_activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow( m_activity.getCurrentFocus()
.getWindowToken(), 0);
}
private static void launch( Delegator delegator, Bundle bundle ) private static void launch( Delegator delegator, Bundle bundle )
{ {
delegator.addFragment( DictBrowseFrag.newInstance( delegator ), delegator.addFragment( DictBrowseFrag.newInstance( delegator ),

View file

@ -21,28 +21,52 @@ package org.eehouse.android.xw4;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.EditText; import android.widget.EditText;
import android.widget.TableRow; import android.widget.TableRow;
import android.widget.TextView.OnEditorActionListener;
import android.widget.TextView; import android.widget.TextView;
import org.eehouse.android.xw4.jni.XwJNI.PatDesc; import org.eehouse.android.xw4.jni.XwJNI.PatDesc;
public class PatTableRow extends TableRow { public class PatTableRow extends TableRow implements OnEditorActionListener {
private static final String TAG = PatTableRow.class.getSimpleName(); private static final String TAG = PatTableRow.class.getSimpleName();
private EditText mEdit; private EditText mEdit;
private CheckBox mCheck; private CheckBox mCheck;
private EnterPressed mEnterProc;
public interface EnterPressed {
public boolean enterPressed();
}
public PatTableRow( Context context, AttributeSet as ) public PatTableRow( Context context, AttributeSet as )
{ {
super( context, as ); super( context, as );
} }
void setOnEnterPressed( EnterPressed proc ) { mEnterProc = proc; }
@Override
protected void onFinishInflate()
{
mCheck = (CheckBox)Utils.getChildInstanceOf( this, CheckBox.class );
mEdit = (EditText)Utils.getChildInstanceOf( this, EditText.class );
mEdit.setOnEditorActionListener(this);
}
@Override
public boolean onEditorAction( TextView tv, int actionId, KeyEvent event )
{
return EditorInfo.IME_ACTION_SEND == actionId
&& null != mEnterProc
&& mEnterProc.enterPressed();
}
public void getToDesc( PatDesc out ) public void getToDesc( PatDesc out )
{ {
getFields();
String strPat = mEdit.getText().toString(); String strPat = mEdit.getText().toString();
out.strPat = strPat; out.strPat = strPat;
out.anyOrderOk = mCheck.isChecked(); out.anyOrderOk = mCheck.isChecked();
@ -50,16 +74,12 @@ public class PatTableRow extends TableRow {
public void setFromDesc( PatDesc desc ) public void setFromDesc( PatDesc desc )
{ {
getFields();
mEdit.setText(desc.strPat); mEdit.setText(desc.strPat);
mCheck.setChecked(desc.anyOrderOk); mCheck.setChecked(desc.anyOrderOk);
} }
public boolean addBlankToFocussed( String blank ) public boolean addBlankToFocussed( String blank )
{ {
getFields();
boolean handled = mEdit.hasFocus(); boolean handled = mEdit.hasFocus();
if ( handled ) { if ( handled ) {
mEdit.getText().insert(mEdit.getSelectionStart(), blank ); mEdit.getText().insert(mEdit.getSelectionStart(), blank );
@ -81,7 +101,6 @@ public class PatTableRow extends TableRow {
void setOnFocusGained( final Runnable proc ) void setOnFocusGained( final Runnable proc )
{ {
getFields();
mEdit.setOnFocusChangeListener( new View.OnFocusChangeListener() { mEdit.setOnFocusChangeListener( new View.OnFocusChangeListener() {
@Override @Override
public void onFocusChange( View view, boolean hasFocus ) public void onFocusChange( View view, boolean hasFocus )
@ -93,9 +112,4 @@ public class PatTableRow extends TableRow {
} ); } );
} }
private void getFields()
{
mEdit = (EditText)Utils.getChildInstanceOf( this, EditText.class );
mCheck = (CheckBox)Utils.getChildInstanceOf( this, CheckBox.class );
}
} }

View file

@ -143,6 +143,7 @@
<item name="android:maxLength">15</item> <item name="android:maxLength">15</item>
<item name="android:inputType">textCapCharacters|textNoSuggestions</item> <item name="android:inputType">textCapCharacters|textNoSuggestions</item>
<item name="android:layout_weight">1</item> <item name="android:layout_weight">1</item>
<item name="android:imeOptions">actionSend</item>
</style> </style>
<style name="pat_table_check"> <style name="pat_table_check">