创建适配器以用对象填充 Spinner [关闭]

2024-01-17

我有一个 Android 应用程序Spinner并想用我自己的对象动态填充它。这些对象确实已经存在List<T>.

对象属于类型Category:

public class Category implements Serializable {
    private Long id;
    private String name;

    // constructors
    // getter & setter
    // hashCode, equals
    // toString
}

我知道我必须写一个适配器。我怎么做?我试图找到一些例子......没有运气。请指教。


这是我的 5 美分。我有类似的问题。我正在使用实现 SpinnerAdapter 接口的 SimpleCursorAdapter,但直到 SDK 版本 11 (Android 3.0) 才出现。我希望我的应用程序能够与 SDK 8 (Android 2.2) 及更高版本一起使用,因此我必须将 SimpleCursorAdapter 替换为另一个或我自己的。真正的挑战是我还为微调器使用了自定义 XML 布局,并在其中显示了光标(即光标适配器)中的多个字段。这是我经过大量研究后的解决方案,而这些信息并不容易获得。

以下是名为 spin_layout.xml 的微调器中使用的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" >
<TextView 
    android:id="@+id/field1"
    android:textColor="#000"
    android:gravity="center"
    android:layout_width="40dp"
    android:layout_height="wrap_content"
    android:textSize="24sp" />
<TextView 
    android:id="@+id/field2"
    android:textColor="#000"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:textSize="24sp" />
</LinearLayout>

这是实现 SpinnerAdapter 和扩展(用作小助手)BaseAdapter 的适配器。最初使用的 Cursor 被转换为 List 并与包含微调器的 Activity 一起传入构造函数。

public class MyCursorAdapter extends BaseAdapter implements SpinnerAdapter{
    private Activity activity;
    private List<BusLines> list_bsl; 

    public MyCursorAdapter(Activity activity, List<BusLines> list_bsl){
        this.activity = activity;
        this.list_bsl = list_bsl;
    }

    public int getCount() {
        return list_bsl.size();
    }

    public Object getItem(int position) {
        return list_bsl.get(position);
    }

    public long getItemId(int position) {
        return list_bsl.get(position).getId();
    }

    public View getView(int position, View convertView, ViewGroup parent) {

    View spinView;
    if( convertView == null ){
        LayoutInflater inflater = activity.getLayoutInflater();
        spinView = inflater.inflate(R.layout.spin_layout, null);
    } else {
         spinView = convertView;
    }
    TextView t1 = (TextView) spinView.findViewById(R.id.field1);
    TextView t2 = (TextView) spinView.findViewById(R.id.field2);
    t1.setText(String.valueOf(list_bsl.get(position).getLine_Num()));
    t2.setText(list_bsl.get(position).getName());
    return spinView;
    }
}

与您在网上找到的其他解决方案不同,方法获取项目ID建立链接id来自数据库的字段,就像 SimpleCursorAdapter 一样。该 id 是传入的参数选中的项目(AdapterView arg0, View arg1, int 位置, longid) 在 OnItemSelectedListener 中spinner.setOnItemSelectedListener。方法getView膨胀的spin_layout.xml,标识布局中包含的两个视图并为它们分配值(作为字符串!)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建适配器以用对象填充 Spinner [关闭] 的相关文章

随机推荐

  • 如何从两列中获取双向组合的计数?

    我在一家货运公司工作 我们有兴趣统计我们的一辆卡车在两个城市之间双向行驶的次数 我有一个表格 列出了每个行程段的出发地和目的地 例如 Origin Destination City 1 City 2 City 2 City 1 City 3
  • 二叉搜索树到 inOrder 数组

    很简单的问题 如何递归地创建使用此构造函数的二叉搜索树数组 按顺序 public class OrderedSet
  • 使用Python(ubuntu)检测工作站/系统屏幕锁定

    无论如何 我们是否可以检测系统 屏幕何时被锁定并通知在 Ubuntu 中触发某些事件 当屏幕通过 DBus 锁定 解锁时 可能会收到通知 这是参考侏儒屏幕保护程序 http live gnome org GnomeScreensaver F
  • git pull fatal:内存不足,malloc 失败

    我有一个回购协议https bitbucket org https bitbucket org 几天前 由于错误 大量图像文件被推送到存储库中 然后文件通过另一次推送被删除 之后该存储库工作正常 但今天当我尝试从存储库中提取时 git pu
  • Express 和 Firebase - 无法在重定向前设置标头

    我正在尝试使 Firebase 身份验证在服务器上工作 use strict const functions require firebase functions const admin require firebase admin adm
  • gfortran 无法在 Mac OS X 10.9 (Mavericks) 上运行

    最近 我将 OS X 更新到了 10 9 Mavericks 不幸的是 尽管我将 OS X Mavericks 的 Xcode 命令行更新为 5 1 1 但 gfortran 停止工作 类似的问题前段时间有人问过 here https st
  • 向首次访客显示欢迎信息

    寻找一种简单的方法来向我的网站的首次访问者显示欢迎消息 最好的方法是什么 使用cookie if empty COOKIE first time show welcome message setcookie first time 1 tim
  • 通过 ssh 启动包含 nohup 的远程脚本

    我想通过 ssh 远程启动一个脚本 如下所示 ssh email protected cdn cgi l email protection t cd my dir myscript data email protected cdn cgi
  • 如何在 Zend Framework 2 中配置学说扩展?

    我已将此行添加到我的composer json中 gedmo doctrine extensions dev master 这是在我的模块的 module config php 中 doctrine gt array driver gt a
  • 将从文件读取的值作为输入传递给 Oracle 中的 SQL 查询

    cat file txt 12354 13456 13498 bin bash for i in cat file txt do sqlplus XXXXX XXXXX DB NAME lt lt EOF select from TABLE
  • Cognos 8 查询查找所有报表和列名称

    我想查询 Cognos 8 中的元数据以查找所有报告和列名称 如果可能的话 我想包含列定义 我可以使用 Cognos 报告来执行此操作还是需要查询某个存储库 Thanks 您可以使用以下查询从内容存储中选择报告列表 SELECT CMOBJ
  • 如何刷新recyclerview的上一个项目行视图的视图

    大家好 希望你们一切都好 我正在开发一个 Android 应用程序 它将播放不同的动物声音 我正在使用回收视图 如下面的屏幕截图所示 现在我面临一个问题 我的行中有一个播放按钮 每当我从项目 0 或在视图内显示暂停选项的任何位置播放声音时
  • 如何使用 PySide2 连接 Python 和 QML?

    我想在 Ubuntu 上编写一个简单的桌面应用程序 我认为一个简单的方法是使用 Qt 和 QML 作为 GUI 使用 Python 作为逻辑语言 因为我对 Python 有点熟悉 现在我花了几个小时尝试以某种方式连接 GUI 和逻辑 但它不
  • 如何加快Spacy的nlp调用速度?

    我必须处理数十万条文本 我发现以下内容中花费时间最长的事情 nlp English ruler EntityRuler nlp patterns ruler add patterns patterns nlp add pipe ruler
  • 物理/逻辑/虚拟内存地址之间的差异

    我对操作系统中的术语物理 逻辑 虚拟地址有点困惑 我使用 Linux open SU SE 这是我的理解 物理地址 当处理器处于系统模式时 处理器使用的地址是物理地址 逻辑地址 当处理器处于用户模式时 使用的地址是逻辑地址 无论如何 通过添
  • 如何重新启动应用程序(React Native 和 Expo)

    我使用 expo 所以我无法访问 android 文件夹 我想第一次重新启动我的应用程序 我怎样才能做到这一点 I use 反应本机重启 https github com avishayil react native restart 但不起
  • 范围规则如何与类一起使用?

    考虑以下 python 代码片段 x 1 class Foo x 2 def foo x 3 class Foo print x prints 3 Foo foo 正如预期的那样 这会打印 3 但是 如果我们在上面的代码片段中添加一行 行为
  • ARM TrustZone 开发

    我想知道是否有人有关于可以使用 ARM TrustZone 的开发板的信息 我有 BeagleBoard XM 它使用 TI 的 OMAP3530 和支持信任区的 Cortex A8 处理器 但是 TI 确认他们已禁用板上的功能 因为它是通
  • 由内而外构建管道代理

    是否可以创建一个函数 以便Proxy from pipes http hackage haskell org package pipes可以从里到外建造吗 由内而外 我的意思是从连接上游和下游连接的函数创建一个代理 最理想 但不可能 的签名
  • 创建适配器以用对象填充 Spinner [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个 Android 应用程序Spinner并想用我自己的对象动态填充它 这些对象确实已经存在List