将集合传递给另一个活动的最佳方法是什么。 Java Android SDK

时间:2015-10-02 11:02:01

标签: java android list sdk set

我有一个包含字符串列表的集合:

public  Set<String> favs = new HashSet<>();

然而,当我开始另一项活动时,收藏夹&#39;我想把这个清单传递给我的Favorties&#39;上课,目前我有:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();


    if (id == R.id.action_settings) {
        return true;
    } else if (id == R.id.exit_the_app) {
        finish();
        return true;
    } else if (id == R.id.favorites) {
        Intent startfavs = (new Intent(Insulter.this, Favorites.class));
        startActivity(startfavs);
        return true;
        }
return super.onOptionsItemSelected(item);
}

我想在“收藏夹”中传递此内容。并最终在将其更改为列表后将其显示在列表视图中。这样做的最佳方式是什么?

(注意:我的第二个活动都是在歧管中设置并运行良好)

2 个答案:

答案 0 :(得分:1)

在名为Insulter的第一个活动中,添加此内容,

Intent startfavs = (new Intent(Insulter.this, Favorites.class));
String[] objects = new String[set.size()];
set.toArray(objects);
final ArrayList<String> list = new ArrayList<String>(Arrays.asList(objects));
startfavs.putStringArrayListExtra("favs",list);
startActivity(startfavs);

在第二个名为“收藏夹”的活动中,要获取参数,

ArrayList<String> favs = getIntent().getStringArrayListExtra("favs");

答案 1 :(得分:0)

在使用它们开始另一个活动之前,可以在意图中添加额外的数据。 Intent类提供了putExtra()方法,可以在其中添加额外的数据。

putExtra()方法有几个重载,因为你具体要求传递一个Set,这个可能是最相关的:

public Intent putExtra (String name, Serializable value)

有关详细信息,请查看以下内容:putExtra(String name, Serializable value)

由于您正在使用HashSet,因此favs实现Serializable,因此传递@Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } else if (id == R.id.exit_the_app) { finish(); return true; } else if (id == R.id.favorites) { Intent startfavs = (new Intent(Insulter.this, Favorites.class)); startfavs.putExtra("favs_set", favs); startActivity(startfavs); return true; } return super.onOptionsItemSelected(item); } 对象应该可以正常工作。

所以你的代码看起来像这样:

Favorites

请勿忘记您还必须检索此数据,因此在onCreate()活动中,使用

检索此数据的public Serializable getSerializableExtra (String name)方法

getExtras().getSerializableExtra("favs_set");

相关的代码片段如下所示:

Office.initialize = function (reason) { $(document).ready(function () { displayItemDetails(); }); };