Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将arraylist从一个活动发送到另一个活动到listview android中_Java_Android_Listview_Arraylist_Android Listview - Fatal编程技术网

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

Java 将arraylist从一个活动发送到另一个活动到listview android中,java,android,listview,arraylist,android-listview,Java,Android,Listview,Arraylist,Android Listview,我正在制作一个android应用程序。它很简单,并且基于引用。我有一个大约300条引文的数据库,分为5个类别:电影、书籍等。当用户在文本视图中单击某个类别时,我会随机显示它们。现在,我希望用户可以选择保存他们最喜欢的报价,因此我有另一个名为Favorites的活动,我希望收藏夹显示在ListView中 为此,我认为最好的方法是让用户将所有收藏夹放在字符串ArrayList中,然后将整个ArrayList发送到favorites活动,它将把ArrayList中的字符串放在ListView中。但是,

我正在制作一个android应用程序。它很简单,并且基于引用。我有一个大约300条引文的数据库,分为5个类别:电影、书籍等。当用户在文本视图中单击某个类别时,我会随机显示它们。现在,我希望用户可以选择保存他们最喜欢的报价,因此我有另一个名为Favorites的活动,我希望收藏夹显示在ListView中

为此,我认为最好的方法是让用户将所有收藏夹放在字符串ArrayList中,然后将整个ArrayList发送到favorites活动,它将把ArrayList中的字符串放在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是最佳选项还是有其他方法?

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

活动A:

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

intent.putExtra("yourlist", list);
startActivity(intent);
活动B:

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

我希望它能帮助你

在shared pref中将araylist另存为json字符串,并在下一个活动中将json字符串解码为arraylist,然后在listview上执行setadapter