将arraylist从一个活动发送到另一个活动到listview android

时间:2015-05-09 14:18:27

标签: java android listview arraylist android-listview

我正在制作一个Android应用程序。它很简单,基于引号。我有一个大约300个引号的数据库,分为5个类别(电影,书籍等),当用户在TextView中点击某个类别时,我会随机显示它们。现在我希望用户可以选择保存他们喜欢的引号,所以我有另一个名为Favorites的活动,我希望收藏夹显示在ListView中。

为此,我认为最好的方法是将用户放入String ArrayList中的所有收藏夹,然后将整个ArrayList发送到Favorites活动,它将把ListList中的字符串放入ListView中。但是,每次我尝试将ArrayList发送到其他活动时,我的应用程序崩溃了。 我只设法发送屏幕上显示的当前字符串

text.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {

            intent.putExtra("key", text.getText());

            Context context = getApplicationContext();
            CharSequence text = "Added to favorites";
            int duration = Toast.LENGTH_SHORT;
            Toast toast = Toast.makeText(context, text, duration);
            toast.show();

然后我把它拿到另一个活动中

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_favorites);


    final ListView lista = (ListView) findViewById(R.id.listView);
    Intent intent = getIntent();
    tekst = intent.getStringExtra("key");
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems);
    lista.setAdapter(adapter);

    listItems.add(tekst);
    adapter.notifyDataSetChanged();
}

但是如果我尝试添加另一个收藏夹,它只会覆盖前一个收藏夹。那我该怎么处理呢?如何发送用户想要的所有收藏? ArrayList是最佳选择还是有其他方式?

2 个答案:

答案 0 :(得分:0)

您之前的ArrayList被覆盖,因为每次导航到Favorites活动时,都会重新创建它,ArrayList也会重新创建。数据不会保留。最好的选择是使用数据库并将项目从一个活动保存到数据库。然后,可以从“收藏夹”活动内的数据库中检索收藏项目。

答案 1 :(得分:0)

活动A:

ArrayList<String> list = new ArrayList<String>();

intent.putExtra("yourlist", list);
startActivity(intent);

活动B:

ArrayList<String> list = getIntent().getSerializableExtra("yourlist");

我希望它可以帮助你......!