Java Android:使用另一个活动的Arraylist填充表
我需要在这里指出正确的方向 我有一个名称的Arraylist(字符串)和一个评级的Arraylist(字符串)。我想在第1列中显示名称,在第2列中显示评级值,这样用户就可以在下一个活动的tablelayout中看到名称及其旁边的评级 ArrayList存在于主活动中,需要发送到下一个活动,我们称之为“活动二”。不知道如何使用ArrayList实现这一点 所以,基本上。我需要知道 如何创建一个表布局列,该列将动态显示用户输入的数据,并在另一个活动中从Arraylist接收该数据Java Android:使用另一个活动的Arraylist填充表,java,android,arraylist,tablelayout,Java,Android,Arraylist,Tablelayout,我需要在这里指出正确的方向 我有一个名称的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。您已经在此处接受了答案。但我将用更多信息更新我的。非常感谢您的澄清!