Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:使用另一个活动的Arraylist填充表_Java_Android_Arraylist_Tablelayout - Fatal编程技术网

Java Android:使用另一个活动的Arraylist填充表

Java Android:使用另一个活动的Arraylist填充表,java,android,arraylist,tablelayout,Java,Android,Arraylist,Tablelayout,我需要在这里指出正确的方向 我有一个名称的Arraylist(字符串)和一个评级的Arraylist(字符串)。我想在第1列中显示名称,在第2列中显示评级值,这样用户就可以在下一个活动的tablelayout中看到名称及其旁边的评级 ArrayList存在于主活动中,需要发送到下一个活动,我们称之为“活动二”。不知道如何使用ArrayList实现这一点 所以,基本上。我需要知道 如何创建一个表布局列,该列将动态显示用户输入的数据,并在另一个活动中从Arraylist接收该数据 我的向导同伴们非常

我需要在这里指出正确的方向

我有一个名称的Arraylist(字符串)和一个评级的Arraylist(字符串)。我想在第1列中显示名称,在第2列中显示评级值,这样用户就可以在下一个活动的tablelayout中看到名称及其旁边的评级

ArrayList存在于主活动中,需要发送到下一个活动,我们称之为“活动二”。不知道如何使用ArrayList实现这一点

所以,基本上。我需要知道

如何创建一个表布局列,该列将动态显示用户输入的数据,并在另一个活动中从Arraylist接收该数据


我的向导同伴们非常感谢任何建议。

一个建议是简单地将数据写入共享数据。然后你可以随时从任何活动中调用它

我这样做是为了在一个视图中设置首选项,然后由小部件稍后使用。同样的应用程序。不同的观点。同样的数据

澄清: 我想我以前说SharedData是个错误的词。我真正应该说的是“共享参考”

它的工作方式是,在活动的某个时刻,您将数据写出来。您只需告诉它要将哪些值写入哪些键,就可以了。在后台,系统存储应用程序特有的XML文件。一旦该文件存在,应用程序中的任何其他活动都可以调用它来检索值

对此的完整解释可在此处找到:


我将其用于实际主要活动是小部件的应用程序。该小部件的首选项是从SharedReferences调用的。这些首选项最初是在正常的全屏活动中编写的。设置它们后,您将关闭活动,下次小部件更新时,它将获取当前值。

如果您已经拥有ArrayList的信息,并且只是调用一个新的意图来打开,那么您应该能够将此信息以捆绑方式传递给新类。由于ArrayList实现了Serializable,您可以将整个数组传递给捆绑包中的新意图,然后将其加载到您创建的新意图中

    // Class that you have the ArrayList in MainActivity
    ArrayList<String> names = new ArrayList<>();
    names.add("NAME 1");
    names.add("NAME 2");

    ArrayList<String> ratings = new ArrayList<>();
    ratings.add("10");
    ratings.add("8");

    // Create the Bundle and add the ArrayLists as serializable
    Bundle bundle = new Bundle();
    bundle.putSerializable("NAMES", names);
    bundle.putSerializable("RATINGS", ratings);

    // Start new intent with ArrayList Bundle passed in
    Intent intent = new Intent(this, ActivityTwo.class);
    intent.putExtra("KEY", bundle);
    startActivity(intent);
//在MainActivity中具有ArrayList的类
ArrayList name=新的ArrayList();
名称。添加(“名称1”);
名称。添加(“名称2”);
ArrayList ratings=新的ArrayList();
评级。添加(“10”);
评级。添加(“8”);
//创建捆绑包并将ArrayList添加为可序列化
Bundle=新Bundle();
bundle.putSerializable(“名称”,名称);
bundle.putSerializable(“评级”,评级);
//使用传入的ArrayList包启动新意图
Intent Intent=新的Intent(this,ActivityTwo.class);
意向。putExtra(“钥匙”,捆绑);
星触觉(意向);
既然已经传入了ArrayList,那么需要在调用的新意图中提取该信息。这应该在ActivityTwo的onCreate中完成

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

    // Get Extras that were passed in
    Bundle extras = getIntent().getExtras();

    // Not null then we can do stuff with it
    if (extras != null) {
        // Since we passed in a bundle need to get the bundle that we passed in with the key  "KEY"
        Bundle arrayListBundle = extras.getBundle("KEY");
        // and get whatever type user account id is

        // From our Bundle that was passed in can get the two arrays lists that we passed in - Make sure to case to ArrayList or won't work
        ArrayList<String> names = (ArrayList) arrayListBundle.getSerializable("NAMES");
        ArrayList<String> ratings = (ArrayList) arrayListBundle.getSerializable("RATINGS");

        // TODO Make this do more than just log
        Log.i(TAG, "Name=" + names.get(0) + " Rating=" + ratings.get(0));
        Log.i(TAG, "Name=" + names.get(1) + " Rating=" + ratings.get(1));

    }
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u phone\u list\u custom);
//获取传入的附加项
Bundle extras=getIntent().getExtras();
//如果不是空的话,我们可以用它做一些事情
如果(附加值!=null){
//因为我们传入了一个bundle,所以需要获取我们用key“key”传入的bundle
Bundle arrayListBundle=extras.getBundle(“KEY”);
//并获取用户帐户id的任何类型
//从传入的Bundle中可以获得传入的两个数组列表-请确保将大小写转换为ArrayList,否则将无法工作
ArrayList名称=(ArrayList)arrayListBundle.getSerializable(“名称”);
ArrayList ratings=(ArrayList)ArrayList bundle.getSerializable(“ratings”);
//要做的不仅仅是记录日志
Log.i(标记,“Name=“+names.get(0)+”Rating=“+ratings.get(0));
Log.i(标记,“Name=“+names.get(1)+”Rating=“+ratings.get(1));
}

我已经填充了我的ArrayList,我不确定是应该使用intent发送数据,还是应该做其他事情。我想有一种常用的方法来实现这一点。我爱你,非常感谢你花时间来清理@Trevor Will你说的“共享数据”是什么意思,您是在谈论使用意图还是其他什么,现在我正在尝试获取活动1中的数据,发送到活动3,然后跳过活动2。您已经在此处接受了答案。但我将用更多信息更新我的。非常感谢您的澄清!