显示一个下拉最近输入的文本的列表时,在Android编辑框中点击(Show a drop down

2019-09-17 02:50发布

我必须表现出一个下拉最近输入的文本列表,当用户编辑text.Example是登录页面显示之前在用户登录

Answer 1:

您正在寻找AutoCompleteTextView http://developer.android.com/reference/android/widget/AutoCompleteTextView.html

创建登录的列表

当用户登录时,都需要在登录保存到某种持久性存储(数据库,文本文件)。

创建一个自动完成列表

每次你创建一个登录的EditText的形式

  1. 从数据库中提取以前的登录值
  2. 创建一个字符串数组掉那些先前登录值的
  3. 创建阵列适配器出来的String数组
  4. 附加阵列适配器您AutoCompleteTextView。


Answer 2:

我只是不能够找到一个解决方案后,实现了这个。 我做了什么戈弗说,但它存储的私人喜好,而不是在一个文件中。 我还添加了一个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是您的包含输入的TextView。 当你点击一个按钮,这上面的代码中被调用。

如果你想知道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从原来这里改装成https://stackoverflow.com/a/5783983/2066079 。

只要记住使用<your.namespace.PrevItemsAutoComplete ... />代替<AutoCompleteTextView ... />如果您选择使用这个类的XML。

此外,您可能需要添加customitemname.addTextChangedListener(this); 您的onCreate。


我花了很多时间在这,所以请不要忘记给予好评,如果这有助于你。



Answer 3:

使用AutocompleteTextView



Answer 4:

您可以使用自动完成TextView的 。但是,你需要做出改变就像你必须保持原记录用户的ArrayList中。



文章来源: Show a drop down list of recently entered text when clicks on an android edit box