Show drop-down list of recently entered text when clicking on android edit box.

I need to show a drop-down list of recently typed texts when the user edits the text. For example, login pages are displayed by previously registered users.

+3
source share
4 answers

You are looking for AutoCompleteTextView http://developer.android.com/reference/android/widget/AutoCompleteTextView.html

Create a list of logins

When the user logs in, you need to save this entry in some kind of permanent storage (database, text file).

Create an automatic complete list

Every time you create a form by entering EditText

  • String
  • String
  • TextView.
+4

, . , , , . if, .

public void YOURSUBMITBUTTON(View view) 
{
    PrevItemsAutoComplete customitemname = (PrevItemsAutoComplete) findViewById(R.id.YOURTEXTVIEW);

    SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
    editor.putString("customitemname",customitemname.getText().toString());
    editor.commit();

    customitemname.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, updatedropdown(5)));
}

public String[] updatedropdown(int listlength)
{
    boolean itemalreadyinlist=false;
    SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();

    for(int i = 0; i<listlength; i++)
    {
        if (getPreferences(MODE_PRIVATE).getString("customitemname","").equals(getPreferences(MODE_PRIVATE).getString("recentlistitem"+String.valueOf(i),"")))
        {
            itemalreadyinlist=true;
            for(int j = i; j>0; j--)
            {
                editor.putString("recentlistitem"+String.valueOf(j),getPreferences(MODE_PRIVATE).getString("recentlistitem"+String.valueOf(j-1),""));
            }
            editor.putString("recentlistitem0",getPreferences(MODE_PRIVATE).getString("customitemname",""));
            editor.commit();
            break;
        }
    }

    if( !itemalreadyinlist)
    {
        for(int i = listlength-1; i>0; i--)
        {
            editor.putString("recentlistitem"+String.valueOf(i),getPreferences(MODE_PRIVATE).getString("recentlistitem"+String.valueOf(i-1),""));
        }
        editor.putString("recentlistitem0",getPreferences(MODE_PRIVATE).getString("customitemname",""));
        editor.commit();
    }

    String[] recentlist = new String[listlength];
    for(int i=0;i<listlength;i++)
    {
        recentlist[i] = getPreferences(MODE_PRIVATE).getString("recentlistitem"+String.valueOf(i),"");
    }

    return recentlist;
}

customitemname - , . .

, PrevItemsAutoComplete, , AutoCompleteTextView. , . :

import android.content.Context;  
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.AutoCompleteTextView;

public class PrevItemsAutoComplete extends AutoCompleteTextView {

public PrevItemsAutoComplete(Context context) {
    super(context);
}

public PrevItemsAutoComplete(Context arg0, AttributeSet arg1) {
    super(arg0, arg1);
}

public PrevItemsAutoComplete(Context arg0, AttributeSet arg1, int arg2) {
    super(arg0, arg1, arg2);
}

@Override
public boolean enoughToFilter() {
    return true;
}

@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
    super.onFocusChanged(focused, direction, previouslyFocusedRect);
    if (focused){
        setText("");
        performFiltering("", 0);
        showDropDown();
    }
}

}

PrevItemsAutoComplete : fooobar.com/questions/63782/....

<your.namespace.PrevItemsAutoComplete ... /> <AutoCompleteTextView ... /> xml, .

, customitemname.addTextChangedListener(this); onCreate.


, , , , .

+4

you can use AutoComplete TextView . But you need to make a change. As you need to save ArrayList previously registered user.

0
source

All Articles