Android 如何从两个字符串对象列表绑定AutoCompleteTextView?

Android 如何从两个字符串对象列表绑定AutoCompleteTextView?,android,Android,我的布局中有一个自动完成文本框,我正在使用自定义适配器填充自动完成建议 AutoCompleteTextView autocompleteView = (AutoCompleteTextView) findViewById(R.id.autocomplete); autocompleteView.setAdapter(new PlacesAutoCompleteAdapter(context, R.layout.autocomplete_list_item)); 点击建议时,所选值将显示在To

我的布局中有一个自动完成文本框,我正在使用自定义适配器填充自动完成建议

AutoCompleteTextView autocompleteView = (AutoCompleteTextView) findViewById(R.id.autocomplete);
autocompleteView.setAdapter(new PlacesAutoCompleteAdapter(context, R.layout.autocomplete_list_item));
点击建议时,所选值将显示在Toast中

autocompleteView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                
            String description = (String) parent.getItemAtPosition(position);
            Toast.makeText(context, description, Toast.LENGTH_SHORT).show();
        }
    });
我没有返回字符串的线性列表,而是修改了数据获取方法,以返回
autoCompleteItem
对象的列表。但我无法将其绑定到我的自动完成文本框

我想要实现的是:

  • “自动完成”框将仅显示placeName的自动完成项对象列表中的建议。(即建议不会显示placeID)

  • 当点击一个建议时,我希望在吐司上显示placeID


  • 使用模型的类是正确的方法。当然,您必须更改
    适配器。您必须扩展扩展
    ArrayAdapter
    而不是
    ArrayAdapter
    getItem
    也是如此,它必须返回
    autoCompleteItem
    而不是
    String
    。您还必须在
    ArrayList resultList
    中更改
    ArrayList resultList

    因为您没有重写
    getView()
    ,所以在模型的类中重写getString并让它返回
    placeName

    在您的
    onItemClick
    中,您将需要

      autoCompleteItem item = (autoCompleteItem) parent.getItemAtPosition(position);
    
    并且,您可以通过
    访问
    自动完成项
    的成员

    请注意,
    autocompleteetem
    应该是
    autocompleteetem
    ,与java命名约定相对应。例如

    public class AutoCompleteItem {
         public String placeName; 
         public String placeID;
    
      @Override
      public String toString() {
         return placeName;
      }
    }
    

    使用模型的类是正确的方法。当然,您必须更改
    适配器。您必须扩展扩展
    ArrayAdapter
    而不是
    ArrayAdapter
    getItem
    也是如此,它必须返回
    autoCompleteItem
    而不是
    String
    。您还必须在
    ArrayList resultList
    中更改
    ArrayList resultList

    因为您没有重写
    getView()
    ,所以在模型的类中重写getString并让它返回
    placeName

    在您的
    onItemClick
    中,您将需要

      autoCompleteItem item = (autoCompleteItem) parent.getItemAtPosition(position);
    
    并且,您可以通过
    访问
    自动完成项
    的成员

    请注意,
    autocompleteetem
    应该是
    autocompleteetem
    ,与java命名约定相对应。例如

    public class AutoCompleteItem {
         public String placeName; 
         public String placeID;
    
      @Override
      public String toString() {
         return placeName;
      }
    }
    

    你能发布更新的代码吗?你能发布更新的代码吗?