Android:使用其他活动中的Arraylist填充表格

时间:2015-09-14 20:26:32

标签: java android arraylist tablelayout

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

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

arraylists存在于主要活动中,需要发送到下一个活动,让我们称之为“活动二”。不知道如何通过Arraylists实现这一目标。

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

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

任何建议都非常感谢我的同伴奇才。

2 个答案:

答案 0 :(得分:1)

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

我这样做是为了在一个视图中设置首选项,稍后由窗口小部件使用。相同的应用。不同意见。相同的数据。

澄清: 我认为在使用SharedData时我曾经使用错误的术语。我真正应该说的是#34; SharedPreferences"。

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

可以在此处找到对此的完整说明: http://developer.android.com/guide/topics/data/data-storage.html

我将它用于实际主要活动是Widget的应用程序。从SharedPreferences调用该小部件的首选项。这些首选项最初是以正常的全屏活动编写的。设置完毕后,关闭活动,下次更新窗口小部件时,它会抓取当前值。

答案 1 :(得分:1)

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

    // 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);

现在您已经传入了ArrayLists,您需要在您调用的新Intent中提取该信息。这应该在onTreate of ActivityTwo

中完成
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));

    }