android中的自动完成文本?

android中的自动完成文本?,android,Android,在我的应用程序中,我使用自动完成文本。当用户键入t时,它显示3,2,50,但我想显示2,3而不是50。有人能帮我解决这个问题吗 String search[] = {"one","two","three","four","five","six","seven","fifty"}; ArrayAdapter<String> adp= new ArrayAdapter<String>(this,R.layout.searchtext, search); se

在我的应用程序中,我使用自动完成文本。当用户键入t时,它显示3250,但我想显示23而不是50。有人能帮我解决这个问题吗

String search[] = {"one","two","three","four","five","six","seven","fifty"};    

ArrayAdapter<String> adp= new ArrayAdapter<String>(this,R.layout.searchtext, search);
    search_item.setThreshold(1);
    search_item.setAdapter(adp);
字符串搜索[]={“一”、“二”、“三”、“四”、“五”、“六”、“七”、“五十”};
ArrayAdapter adp=新的ArrayAdapter(this,R.layout.searchtext,search);
搜索项目。设置阈值(1);
搜索项。设置适配器(adp);

我认为您不必创建自定义适配器。它的默认功能是您想要的。检查这个

这里我有如下数组:

private static final String[] COUNTRIES = new String[] { "Belgium",
        "France", "France_", "Italy", "Germany", "Spain","abcf","FFa","FFb","bFF","aFF" };
当我搜索ff时,它只给我
2(“FFa”、“FFb”)
建议而不是
4(“FFa”、“FFb”、“bFF”、“aFF”)

我在ActionBar中使用过这个。您也可以在布局中使用此选项。因为它在ActionBar中的自定义布局。

public class TestActivity extends Activity {

    /** Called when the activity is first created. */
    private static final String[] COUNTRIES = new String[] { "Belgium",
        "France", "France_", "Italy", "Germany", "Spain","abcf","FFa","FFb","bFF","aFF" };

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

        setContentView(R.layout.activity_main);

        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setDisplayShowCustomEnabled(true);
        // actionBar.setDisplayShowTitleEnabled(false);
        // actionBar.setIcon(R.drawable.ic_action_search);

        LayoutInflater inflator = (LayoutInflater) this
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = inflator.inflate(R.layout.test, null);

        actionBar.setCustomView(v);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_dropdown_item_1line, COUNTRIES);
        AutoCompleteTextView textView = (AutoCompleteTextView) v
                .findViewById(R.id.editText1);
        textView.setAdapter(adapter);

    }
}
公共类测试活动扩展活动{
/**在首次创建活动时调用*/
私有静态最终字符串[]国家=新字符串[]{“比利时”,
“法国”、“法国”、“意大利”、“德国”、“西班牙”、“abcf”、“FFa”、“FFb”、“bFF”、“aFF”};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar ActionBar=getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowCustomEnabled(true);
//actionBar.setDisplayShowTitleEnabled(false);
//actionBar.setIcon(R.drawable.ic\u action\u search);
LayoutInflater充气机=(LayoutInflater)此
.getSystemService(上下文布局\充气机\服务);
视图v=充气机充气(R.layout.test,空);
actionBar.setCustomView(v);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_下拉列表_项目_1行,国家/地区);
AutoCompleteTextView文本视图=(AutoCompleteTextView)v
.findViewById(R.id.editText1);
setAdapter(适配器);
}
}
test.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Action Bar:"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#FFFFFF" />

    <AutoCompleteTextView
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:imeOptions="actionSearch"
        android:inputType="textAutoComplete|textAutoCorrect"
        android:textColor="#FFFFFF" >

        <requestFocus />
    </AutoCompleteTextView>

</LinearLayout>

在科特林:

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInput_type"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:hint="@string/type">

            <AutoCompleteTextView
                android:id="@+id/act_type"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fontFamily="@font/light"
                android:ems="10"
                android:editable="false"
                android:text=""
                android:textSize="12sp" />
        </com.google.android.material.textfield.TextInputLayout>
class MyFragment : Fragment() {
    var orderType = arrayOf("فروش", "خرید")
    lateinit var mBinding: MyFragment

    override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    mBinding = MyFragment.inflate(inflater, container, false)
    val adapter= ArrayAdapter(requireContext(),android.R.layout.simple_spinner_item, orderType.toList())
    mBinding.autoOrderType.threshold = 0
    mBinding.autoOrderType.setAdapter(adapter)
    return mBinding.root
}
我对初始值视图使用数据绑定

xml:

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInput_type"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:hint="@string/type">

            <AutoCompleteTextView
                android:id="@+id/act_type"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fontFamily="@font/light"
                android:ems="10"
                android:editable="false"
                android:text=""
                android:textSize="12sp" />
        </com.google.android.material.textfield.TextInputLayout>
class MyFragment : Fragment() {
    var orderType = arrayOf("فروش", "خرید")
    lateinit var mBinding: MyFragment

    override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    mBinding = MyFragment.inflate(inflater, container, false)
    val adapter= ArrayAdapter(requireContext(),android.R.layout.simple_spinner_item, orderType.toList())
    mBinding.autoOrderType.threshold = 0
    mBinding.autoOrderType.setAdapter(adapter)
    return mBinding.root
}

理想情况下,将阈值设置为2-3而不是1,这将导致显示过多并浪费大量处理时间filter@Pragnani如何使用带有过滤器的自定义adpter。@Yugesh在google中搜索相同的内容,您将在SO中找到许多教程和问题