以不同方法访问和使用自定义对象和ArrayList <object>

时间:2017-06-25 18:03:44

标签: java class arraylist methods

我目前正在开发一个应用程序,它将使用许多对象作为信息持有者(音乐事物 - 艺术家,歌曲,专辑封面img的id,以及第二个img的另一个id)。

我决定创建&#34; Track&#34; class并使用它来创建对象并将它们存储在ArrayList中。

我创建了这个类,我创建了列表,但是我在访问它时遇到了麻烦(我想根据当前的Track对象更改ImageViews和TextViews)。

以下是曲目类: Track.java分开

public class Track {
private String mNameArtist;
private String mNameTrack;
private int mTabResource;
private int mCoverResource;

public Track(String nameArtist, String nameTrack, int tabResourceId, int coverResourceId){
    mNameArtist = nameArtist;
    mNameTrack = nameTrack;
    mTabResource = tabResourceId;
    mCoverResource = coverResourceId;
}
public String getArtistName() {
    return mNameArtist;
}
public String getTrackName() {
    return mNameTrack;
}
public int getTabResourceId() {
    return mTabResource;
}
public int getCoverResourceID() {
    return mCoverResource;
}}

以及这里的ArrayList声明: PlayActivity.java,在onCreate方法中)

    ArrayList<Track> Tracks = new ArrayList<Track>();
    Tracks.add(new Track("Artist Name", "Track Name", R.drawable.tabtemplate, R.drawable.testcover));
    Tracks.add(new Track("Pink Floyd", "Comfortably Numb Solo 1", R.drawable.CNS1Tab, R.drawable.pink_floyd_the_wall));

还有更多职位,但你明白了。

到目前为止,一切似乎都很好。

当我想在另一个方法中访问它时(即使在同一个PlayActivity.java中)没有任何反应或者我看到错误。我尝试了许多不同的方法,但每一个都失败了。例如:

    Track.getTabResource();  // can't even use the method.
    Tracks.get(3);           // does not work as well.

我只是不能在我的方法中使用对象或arraylist。 &#34;曲目阵列&#34;在打字时甚至不会出现在Android Studio中。跟踪确实如此,但我无法从Array访问位置。

总结一下,还有其他方法可以在其他类和方法中使用我的Objects(ArrayList)项吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

将List创建为实例变量,并通过该类的Object进行访问。

public class PlayActivity {
        List<Track> tracks = new ArrayList<Track>();

        public void onCreate() {
            tracks.add(new Track("Artist Name", "Track Name", R.drawable.tabtemplate, R.drawable.testcover));
            tracks.add(
                    new Track("Pink Floyd", "Comfortably Numb Solo 1", R.drawable.CNS1Tab, R.drawable.pink_floyd_the_wall));
        }

        public List<Track> getAllTracks() {
            return Collections.unmodifiableList(tracks);
        }

        public Track getTrack(int index) {
            return tracks.get(index);

        }
    }