在 Android 中使用 SearchableSpinner 和自定义适配器

Posted

技术标签:

【中文标题】在 Android 中使用 SearchableSpinner 和自定义适配器【英文标题】:Using SearchableSpinner with Custom Adapter in Android 【发布时间】:2020-05-06 15:42:32 【问题描述】:

我在我的 android 项目和我的 SearchableSpinner 中使用 ‍‍SearchableSpinner,我使用了两个文本视图,所以我制作了一个自定义适配器。当我点击 SearchableSpinner 时,数据显示不正确。

这是我的自定义适配器代码。我在自定义适配器中使用 getView 和 getDropDownview。

private ArrayList<University> universityList;
private Activity context;

public UniversityListAdapterForUploadPage(ArrayList<University> universityList, Activity context)
    super(context,R.layout.university_list_row_for_spinner,universityList);
    this.universityList = universityList;
    this.context = context;


@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) 

    LayoutInflater layoutInflater = context.getLayoutInflater();
    View customView = layoutInflater.inflate(R.layout.university_list_row_for_spinner,null,true);

    TextView universityIDText  = customView.findViewById(R.id.universityID_textView_for_spinner);
    TextView universityNameText = customView.findViewById(R.id.university_name_textView_for_spinner);

    University university = universityList.get(position);

    universityIDText.setText(university.getUniversityID()+"");
    universityNameText.setText(university.getUniversityName());

    return customView;


@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) 
    LayoutInflater layoutInflater = context.getLayoutInflater();
    View customView = layoutInflater.inflate(R.layout.university_list_row_for_spinner,null,true);

    TextView universityIDText  = customView.findViewById(R.id.universityID_textView_for_spinner);
    TextView universityNameText = customView.findViewById(R.id.university_name_textView_for_spinner);

    University university = universityList.get(position);

    universityIDText.setText(university.getUniversityID()+"");
    universityNameText.setText(university.getUniversityName());

    return customView;

我需要帮助。

【问题讨论】:

【参考方案1】:
universityIDText.setText(university.getUniversityID()+"");
universityNameText.setText(university.getUniversityName());

这两个调用没有传递String。您正在传递一个 java 对象 ID

【讨论】:

其实我在这里传递字符串值:university.getUniversityName() 是的,它在技术上是一个字符串,但我的意思是您传递的是 Java ID 的字符串表示形式,而不是 Java 对象值的字符串 好吧,我做了这样的,但它没有用: String universityName = university.getUniversityName();大学名称文本.setText(大学名称);它也适用于普通 Spinner 和 ListView【参考方案2】:

@Override toString() 在你的模型中 将此添加到您的模型类中..希望它会有所帮助..

public String toString()
    return universityName;

【讨论】:

以上是关于在 Android 中使用 SearchableSpinner 和自定义适配器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 应用程序中使用 OSM 地图。?有啥教程可以学习在android中使用OSM吗?

如何在Mac中使用Android SDK

在 Android 中使用 Intent 在活动中传递 android 位图数据

无法在 Android 中使用 Android Crop 图像裁剪库

Android:如何在 Android 中使用 tensorflow lite 扩展图像的维度

如何在android中使用WCF服务?