将自定义对象的数组列表传递给另一个活动

2023-12-12

单击单元格时,对象将添加到数组中。该数组需要传递到另一个活动中。出于测试目的,我传递了只有一个对象 DoctorObject 的数组。然后在下一个活动中,我使用 .getName() 将名称作为字符串获取,并将其显示在 toast 中。然而吐司是空的。

这是代码的一些片段

Object:

public class DoctorObject implements Parcelable {

private List<Object> mChildrenList;

public DoctorObject(String name) {
    Docname = name;

}

public DoctorObject (Parcel in){
    this.DocPic = in.readInt();
    this.Docname= in.readString();
    this.Docspecialty = in.readString();
    this.DocLocation = in.readString();
}

String Docname = "";

public String getDocname() {
    return Docname;
}

public void setDocname(String docname) {
    Docname = docname;
}

public int getDocPic() {
    return DocPic;
}

public void setDocPic(int docPic) {
    DocPic = docPic;
}

public String getDocspecialty() {
    return Docspecialty;
}

public void setDocspecialty(String docspecialty) {
    Docspecialty = docspecialty;
}

public String getDocLocation() {
    return DocLocation;
}

public void setDocLocation(String docLocation) {
    DocLocation = docLocation;
}

int DocPic;
String Docspecialty = "";
String DocLocation = "";





@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {

}

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
    public DoctorObject createFromParcel(Parcel in) {
        return new DoctorObject(in);
    }

    public DoctorObject[] newArray(int size) {
        return new DoctorObject[size];
    }
};

活动:

ArrayList<DoctorObject> selectedItems = new ArrayList<>();

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_create_my_team);

    context = this;


    /* Regular Expand listview

     */

    // get the listview
    expListView = (ExpandableListView) findViewById(R.id.newTeamListView);

    // preparing list data
    prepareListData();

    listAdapter = new ExpandableListAdapter(this,  listDataDoc, listDataChildStaff);

    // setting list adapter
    expListView.setAdapter(listAdapter);

   // expListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

    // Listview on child click listener
    expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {

        @Override
        public boolean onChildClick(ExpandableListView parent, View v,
                                    int groupPosition, int childPosition, long id) {
            // TODO Auto-generated method stub



            DoctorObject currentDoc = listDataDoc.get(groupPosition);

            StaffObject currentStaff = listDataChildStaff.get(listDataDoc.get(groupPosition)).get(childPosition);


            selectedItems.add(currentDoc);

            String toastname = currentDoc.getDocname();
            String toastStaff = currentStaff.getStaffname();

            Toast.makeText(getApplicationContext(),
                   toastStaff,
                            Toast.LENGTH_SHORT).show();

            return true;
        }
    });



    /* End of regular expand listview

     */



    nextButton = (Button) findViewById(R.id.nextbuttonTeam);

    nextButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent myIntent = new Intent(CreateMyTeamActivity.this, CreateReferralTeamActivity.class);
            myIntent.putParcelableArrayListExtra("NAME", selectedItems);
            //myIntent.putExtra("Selections",selectedItems);
            CreateMyTeamActivity.this.startActivity(myIntent);


        }
    });


}

下一个活动:

public class CreateReferralTeamActivity extends AppCompatActivity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_create_referral_team);

    Intent b = getIntent();
     ArrayList<DoctorObject> list = (ArrayList<DoctorObject>) b.getSerializableExtra("NAME");

    String lists ="";
    for (int i=0; i < list.size(); i++){
       lists  =  list.get(i).getDocname();
    }



    //TextView text = (TextView) findViewById(R.id.sampleText);

    //text.setText(lists);

    Toast.makeText(getApplicationContext(),
            lists,
            Toast.LENGTH_SHORT).show();

}

}

当我运行这个时,数组似乎是空的。

这是一个 gif 动画:

https://i.stack.imgur.com/qfxzT.jpg


如果您的 T 对象不是 Parcelable 对象,您可以使用 Gson 库将 ArrayList 传递给另一个 Activity。通用类型在哪里。在你的例子中,它是 ArrayList

步骤1:首先使用Gradle脚本导入Gson库

在 Gradle 依赖项中添加此行

dependencies {
    compile 'com.google.code.gson:gson:2.7'
}

步骤 2:将 ArrayList 转换为 JSON 字符串,并将 JSON 字符串从活动 1 传递到活动 2

        ArrayList<DoctorObject> doctors = new ArrayList<Location>();
        doctors.add(new DoctorObject(params));
        doctors.add(new DoctorObject(params));

        Gson gson = new Gson();
        String jsonString = gson.toJson(doctors);
        Intent intent = new Intent(MainActivity.this,MapsActivity.class);
        intent.putExtra("KEY",jsonString);
        startActivity(intent);

步骤3:从Bundle中获取JSON字符串并将其转换回ArrayList

    import java.lang.reflect.Type;


    Bundle bundle = getIntent().getExtras();
    String jsonString = bundle.getString("KEY");

    Gson gson = new Gson();
    Type listOfdoctorType = new TypeToken<List<DoctorObject>>() {}.getType();
    ArrayList<DoctorObject> doctors = gson.fromJson(jsonString,listOfdoctorType );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将自定义对象的数组列表传递给另一个活动 的相关文章

  • 为什么将函数参数声明为最终的?

    我目前正在阅读 Sams 出版的 24 小时自学 Android 应用程序开发 一书 我对 Java Android 或其他方面还比较陌生 我对 ActionScript 3 有非常扎实的背景 它与 Java 有足够的相似之处 因此该语言本
  • 如何创建没有循环关系的树形表?

    CREATE TABLE TREE node1 id UUID REFERENCES nodes object id NOT NULL node2 id UUID REFERENCES nodes object id NOT NULL CO
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • 显示和随机化 php 数组

    我有一个显示结果的数组 如下所示 Array 0 gt 71 1 gt 56 2 gt 64 3 gt 82 4 gt 90 5 gt 80 6 gt 65 7 gt 62 8 gt 14 9 gt 3 我的代码是 while row my
  • 菜单未显示在应用程序中

    由于某种原因 我的操作菜单在我的 Android Studio 应用程序中消失了 我正在按照教程学习如何创建 Android 应用程序 但最终遇到了这个问题 我正在使用 atm 的教程 http www raywenderlich com
  • 在 Android 中使用 DataOutputStream 在 POST 正文中发送特殊字符 (ë ä ï)

    我目前正在开发一个具有大量服务器端通信的 Android 应用程序 昨天 我收到一份错误报告 称用户无法发送 简单 特殊字符 例如 我搜索过但没有找到任何有用的东西 可能重复 没有答案 https stackoverflow com que
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • Android 原理图内容提供程序库配置?

    Jake Wharton 在最近的一次演讲中提到了这个库 它看起来是避免大量样板文件的好方法 所以我尝试了一下 但没有任何成功 https github com SimonVT schematic https github com Simo
  • 在我的Android中,当其他应用程序想要录制音频时如何停止录音?

    在我的应用程序中 服务通过 AudioRecord 持续录制音频 当我的应用程序运行时 其他与音频记录相关的应用程序 例如 Google 搜索 无法工作 如何知道何时有其他应用想要录制音频 以便我可以停止录制以释放资源 答案是MediaRe
  • OnClick 事件中的 finish() 如何工作?

    我有一个Activity一键退出Activity 通过layout xml我必须设置OnClick事件至cmd exit调用 this finish 效果很好 public void cmd exit View editLayout thi
  • 从 Firebase 数据库填充微调器

    public class MainActivity extends AppCompatActivity DatabaseReference reference Spinner areaSpinner ArrayList
  • 带有自定义阵列适配器的微调器不允许选择项目

    我使用自定义阵列适配器作为微调器 但是 当在下拉列表中选择一个项目时 下拉列表保留在那里 并且微调器不会更新 这是错误行为 与使用带有字符串的通用数组适配器相比 这是自定义类 我错过了什么吗 谢谢 public class Calendar
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • JNI 将 Char* 2D 数组传递给 JAVA 代码

    我想从 C 代码通过 JNI 层传递以下指针数组 char result MAXTEST MAXRESPONSE 12 12 8 3 29 70 5 2 42 42 在java代码中我写了以下声明 public static native
  • Android相机意图:如何获取全尺寸照片?

    我正在使用意图来启动相机 Intent cameraIntent new Intent android provider MediaStore ACTION IMAGE CAPTURE getParent startActivityForR
  • Android构建apk:控制MANIFEST.MF

    Android 构建 APK 假设一个 apk 包含一个库 jar 例如 foo jar 该库具有 META INF MANIFEST MF 这对于它的运行很重要 但在APK中有一个包含签名数据的MANIFEST MF 并且lib jar
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re

随机推荐

  • 从数据框创建汇总统计表

    我有以下 5 个变量的 29 个观察值的数据框 df age height seca1 height chad1 height DL weight alog1 1 19 1800 1797 180 70 2 19 1682 1670 167
  • Rx.NET:按顺序组合可观察量

    我有2个IConnectableObservable其中一个正在重播旧的历史消息 另一个正在发出新的当前值 HistoricObservable 1 2 3 4 5 6 7 8 CurrentObservable 5 6 7 8 9 10
  • org.xml.sax.SAXParseException:解析 XML 时出现意外标记

    Update 看来我必须提供返回 xml 的 URL 这里是 URL 解析 xml 时出现 SAXParseException 我试图解析的 xml 如下
  • 如何判断一个类是否继承自 NSObject (Objective-C)

    我正在 iPhone 上使用 Objective C 需要知道 类 是否继承自 NSObject 我尝试检查它是否响应 NSObject 选择器 bool success myClass respondsToSelector selecto
  • PHP无法上传文件到服务器?

    我有一个 php 文件 它将 jpegs 和 png 等图像上传到一个名为 uploads 的文件夹中 该文件夹存储在 apache 服务器上 并且与 php 文件位于同一位置 我检查了 HTML 和 PHP 的代码 两者似乎都很好 但是每
  • 使用 Python 数值求解 ODE

    我正在使用 Python 数值求解谐振子的 ODE 当我添加驱动力时 它没有任何区别 所以我猜测代码有问题 任何人都可以看到问题吗 这 h m f0 np cos wd i 部分是动力 import numpy as np import m
  • Visual Studio Express 版本的 Wix 项目模板?

    是否可以在 Express 版本中使用 Wix 我对 2010 2012 版本感兴趣 我知道我可以从命令行使用蜡烛和光 但我对与 IDE 集成感兴趣 VS 的 Express 版本不允许使用必要的插件来扩展 VS 所以你必须继续使用命令行
  • 为什么淡入淡出过渡不适用于共享元素

    我有 2 个 Activity 共享元素转换工作正常 变化范围是唯一应用的过渡 我想在共享元素移动时应用淡入淡出过渡 因此排序为 ORDERING TOGETHER public class TransitionUtils public s
  • 如何使用 Dropwizard 测试 HMAC 身份验证?

    我刚刚开始使用 Dropwizard 0 4 0 我需要一些有关 HMAC 身份验证的帮助 有人有什么建议吗 先感谢您 目前 Dropwizard 不支持开箱即用的 HMAC 身份验证 因此您必须编写自己的身份验证器 HMAC 身份验证的典
  • 使用 jQuery noconflict 与两个版本的 jQuery

    问题是 如果你想在页面上使用 otherLibrary 必须是 otherLibrary 的 而不是 jQuery 的 由于 无论如何只是 jQuery 的别名 因此 jQuery 提供了 noConflict 函数作为告诉 jQuery
  • 字符串过滤器:检测非 ASCII 符号

    我正在创建一个应用程序 它将输入字符串发送到移动设备 有些设备在编码特殊字符方面存在问题 因此我想创建一个过滤器 不允许 PC 上的用户输入特殊字符 该应用程序是用 C NET 3 5 编写的 我想将一个方法附加到按键事件 伪代码如下 pr
  • MySQL my.cnf 文件 - 找到没有前面组的选项

    我正在尝试远程连接到 Ubuntu 中的数据库 但在尝试时收到错误消息mysql u root p 在配置文件中找到没有前面组的选项 etc mysql my cnf 第 1 行 my cnf 看起来像 mysqld user mysql
  • 我的 Recyclerview 没有显示任何内容

    我想将 mysql 数据库中的项目显示到我的 recyclerview 但我不知道为什么它不显示任何内容 回收者视图
  • java.library.path 中没有 swt-mozilla-gtk-4332

    有关新信息 请参阅底部的更新 我有一个包含集成浏览器的 Java SWT 应用程序 在 Windows 和 CENTOS 6 5 上一切正常 我被要求让该应用程序在安装了 CENTOS 7 的新计算机上运行 我不断收到 no swt moz
  • 导入多个文件并提取 r 中的特定列

    我有 20 个数据文件 txt 我的最终目标是从每 20 个文件中选择一个特定列 比方说 V3 并创建一个新文件 我试过 temp lt list files pattern snp blp 我如何从每 20 个文件中提取 V3 并在 r
  • 从 WPF RichTextBox 获取 FontWeight/FontStyle/TextDecorations

    如何检测 WPF RichTextBox 中光标位置的当前文本格式 该帖子的作者还询问了有关 TextDecorations 的问题 您没有提供示例代码及其使用方法的不同 我将其发布为进一步的解决方案 var obj myText GetP
  • Python Pandas:转置还是堆栈?

    您好 我下面有一个示例数据框 我无法通过转置获得所需的结果 x P P O DNP D y O O D DNP DNP z P P O U DNP a O O D DNP DNP b P DNP O U DNP ID ID1 ID2 ID3
  • C# 中的 DateTime 和 SQL Server 中的 DateTime 有什么区别吗?

    C 中的 DateTime 和 SQL Server 中的 DateTime 有什么区别吗 精度和范围 所以 一切都很重要 p 来自 MSDN NET 系统日期时间 DateTime 值类型表示日期和时间 其值范围为公元 0001 年 1
  • Vis.js 网络节点定制:卡片作为节点

    我想建立一个网络 其中节点表示结构类似于卡片的信息 对于卡片 我指的是由两个区域组成的结构 多行文本区域 我可以在其中放置来自不同资源的信息 例如姓名 电话号码 地址和 控制区域 我可以在其中有 2 3 个按钮 最好带有图标 来最大化节点
  • 将自定义对象的数组列表传递给另一个活动

    单击单元格时 对象将添加到数组中 该数组需要传递到另一个活动中 出于测试目的 我传递了只有一个对象 DoctorObject 的数组 然后在下一个活动中 我使用 getName 将名称作为字符串获取 并将其显示在 toast 中 然而吐司是