在 Android 中传递 ArrayLists [英] Passing ArrayLists in Android

查看:27
本文介绍了在 Android 中传递 ArrayLists的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 Android 中的活动之间传递数组列表.列表包含字符串.我已经阅读了很多关于 Parcelable 的内容.我是否需要创建一个 Parcelable 来传递一个 String 数组列表?截至目前,我正在使用 putStringArrayListExtra() 和 getSringArrayListExtra() 通过意图传递列表.

I'm trying to pass array lists between activities in Android. The lists contains strings. I've read a lot about Parcelable. Would I need to create a Parcelable to pass a String array list? As of now I am using putStringArrayListExtra() and getSringArrayListExtra() to pass the lists through intents.

这是我的一些代码.

Intent load = new Intent(getApplicationContext(), HelloTabWidget.class);
        load.putStringArrayListExtra("albums", albums);  
        load.putStringArrayListExtra("songs", songs);  
        load.putStringArrayListExtra("artists", artists); 
        load.putStringArrayListExtra("fileName", fileName);  

这是我用于获取数组列表的活动的 onCreate 方法.

This is my onCreate method for the acticity which obtains the array list.

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.songlist); 

    Bundle extras = getIntent().getExtras();
    isArtists = extras.getBoolean("artists");   
    isAlbums = extras.getBoolean("albums"); 
    isSongs = extras.getBoolean("songs");   

        Intent get = getIntent();  
        songs = get.getStringArrayListExtra("songs"); 
        artists = get.getStringArrayListExtra("artists");
        albums = get.getStringArrayListExtra("albums");
        fileName = get.getStringArrayListExtra("fileName"); 



    if(isArtists == true)       
        updateArtistsList(); 
    else if(isAlbums == true) 
        updateAlbumsList();  
    else if(isSongs == true) 
        updateSongList();    
}

检索列表的类应该从列表中的数据创建一个 listView.每当我运行代码时,我都会在尝试制作列表时得到 nullPointerExceptions.我知道我的 listView 代码有效,所以我已经将问题缩小到传递数组列表的意图.

The class which retrieves the list is supposed to create a listView from the data in the lists. Whenever I run the code i get nullPointerExceptions when trying to make the lists. I know that my listView code works, so I have narrowed down the problem to the intents which pass the array lists.

提前致谢.

这是 logcat 的前几行.

Here are the first few lines from the logcat.

12-28 03:03:42.313: E/AndroidRuntime(873): FATAL EXCEPTION: main
12-28 03:03:42.313: E/AndroidRuntime(873): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.adam.mediaplayer/com.adam.mediaplayer.HelloTabWidget}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.adam.mediaplayer/com.adam.mediaplayer.MakeListActivity}: java.lang.NullPointerException

推荐答案

取决于arraylist的类型

It depends on the type of arraylist

  • putIntegerArrayListExtra(String name, ArrayList value)

putParcelableArrayListExtra(String name, ArrayList value)

putStringArrayListExtra(String name, ArrayList value)

putCharSequenceArrayListExtra(String name, ArrayList value)

然后您可以通过将 put 替换为 get 并使用键字符串作为参数来读取下一个活动,例如

Then you can read from you next activity by replacing put with get with key string as argument,eg

myIntent.getStringArrayListExtra("arrayListName");

这篇关于在 Android 中传递 ArrayLists的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆