我需要在这里指出正确的方向。
我有一个名字的Arraylist(字符串)和一个评级的Arraylist(String)。我想在第1列中显示名称,在第2列中显示评级值,以便用户可以在下一个活动的tablelayout中查看名称及其旁边的评级。
arraylists存在于主要活动中,需要发送到下一个活动,让我们称之为“活动二”。不知道如何通过Arraylists实现这一目标。
所以,基本上。我需要知道..
如何创建一个表格布局列,该列将动态显示用户输入的数据,并从另一个活动中的Arraylist接收该数据。
任何建议都非常感谢我的同伴奇才。
答案 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));
}