Android:使用来自另一个 Activity 的 Arraylist 填充 Table
Android: Populating a Table with an Arraylist from another Activity
我需要在这里指出正确的方向。
我有一个名字的 Arraylist(String) 和一个评级的 Arraylist(String)。我想在第 1 列中显示名称,在第 2 列中显示评分值,以便用户可以在下一个 [=26] 的 table 布局中看到名称以及他们在名称旁边给出的评分=].
arraylists存在于主activity中,需要传送到下一个activity,姑且称之为'Activity Two'。不确定如何使用 Arraylists 实现此目的。
所以,基本上。我需要知道..
如何创建一个 table 布局列,它将动态显示用户输入的数据,并从另一个 activity 中的 Arraylist 接收该数据。
非常感谢我的巫师们的任何建议。
一个建议是将数据简单地写入 SharedData。然后你可以随时从任何 activity 回调它。
我这样做是为了在一个视图中设置首选项,然后供小部件使用。相同的应用程序。不同的看法。相同的数据。
澄清一下:
我想我以前在说 SharedData 时使用了错误的术语。我真正应该说的是 "SharedPreferences".
它的工作方式是,在您 activity 的某个时刻,您将数据写出。您只需告诉它要将哪些值写入哪些键,就可以了。在后台,系统会存储您的应用程序独有的 XML 文件。一旦该文件存在,您应用中的任何其他 activity 都可以调用它来检索值。
完整的解释可以在这里找到:
http://developer.android.com/guide/topics/data/data-storage.html
我将其用于实际主要 activity 是小部件的应用程序。该小部件的首选项是从 SharedPreferences 调用的。这些首选项最初是在正常的全屏 activity 中编写的。设置它们后,关闭 activity,下次小部件更新时,它会获取当前值。
如果您已经拥有 ArrayList 的信息并且只是调用一个新的 Intent 来打开您应该能够将此信息在 Bundle 中传递给新的 class。由于 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);
现在您已经传入了 ArrayList,您需要在您调用的新 Intent 中提取该信息。这应该在 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));
}
我需要在这里指出正确的方向。
我有一个名字的 Arraylist(String) 和一个评级的 Arraylist(String)。我想在第 1 列中显示名称,在第 2 列中显示评分值,以便用户可以在下一个 [=26] 的 table 布局中看到名称以及他们在名称旁边给出的评分=].
arraylists存在于主activity中,需要传送到下一个activity,姑且称之为'Activity Two'。不确定如何使用 Arraylists 实现此目的。
所以,基本上。我需要知道..
如何创建一个 table 布局列,它将动态显示用户输入的数据,并从另一个 activity 中的 Arraylist 接收该数据。
非常感谢我的巫师们的任何建议。
一个建议是将数据简单地写入 SharedData。然后你可以随时从任何 activity 回调它。
我这样做是为了在一个视图中设置首选项,然后供小部件使用。相同的应用程序。不同的看法。相同的数据。
澄清一下: 我想我以前在说 SharedData 时使用了错误的术语。我真正应该说的是 "SharedPreferences".
它的工作方式是,在您 activity 的某个时刻,您将数据写出。您只需告诉它要将哪些值写入哪些键,就可以了。在后台,系统会存储您的应用程序独有的 XML 文件。一旦该文件存在,您应用中的任何其他 activity 都可以调用它来检索值。
完整的解释可以在这里找到: http://developer.android.com/guide/topics/data/data-storage.html
我将其用于实际主要 activity 是小部件的应用程序。该小部件的首选项是从 SharedPreferences 调用的。这些首选项最初是在正常的全屏 activity 中编写的。设置它们后,关闭 activity,下次小部件更新时,它会获取当前值。
如果您已经拥有 ArrayList 的信息并且只是调用一个新的 Intent 来打开您应该能够将此信息在 Bundle 中传递给新的 class。由于 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);
现在您已经传入了 ArrayList,您需要在您调用的新 Intent 中提取该信息。这应该在 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));
}