【问题标题】:Accessing and using custom Objects and ArrayList<Object> in different methods以不同的方法访问和使用自定义对象和 ArrayList<Object>
【发布时间】:2017-11-28 16:01:50
【问题描述】:

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

我认为最好创建“Track”类并使用它来制作对象并将它们存储在 ArrayList 中。

我创建了类,我创建了列表,但我无法访问它(我想根据当前的 Track 对象更改 ImageViews 和 TextViews)。

这是 Track 类: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.

我只是不能在我的方法中使用对象或那个数组列表。键入时,“Tracks 数组”甚至不会出现在 Android Studio 中。 Track 可以,但我无法从 Array 访问位置。

总而言之,有没有其他方法可以在其他类和方法中使用我的 Objects (ArrayList) 项?

提前感谢您的帮助。

【问题讨论】:

  • Tracks 是一个局部变量。使用字段代替(如Track 中的mNameArtist

标签: java class arraylist methods


【解决方案1】:

将 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);

        }
    }

【讨论】:

  • 好吧,谢谢你的朋友!它有很大帮助。总的来说,我的代码和一切都很好,我只是犯了一个超级愚蠢的错误,并在 onCreate 方法中声明了我的 ArrayList,而它应该与其他变量一起在外面。我没有将它从 ArrayList 更改为正常的 List 思想,我不确定是否有必要?无论如何,它现在完美无缺,谢谢您的帮助。我很愚蠢,我自己没有注意到它:D。干杯!
猜你喜欢
  • 2015-06-17
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 2018-04-26
  • 2016-09-27
  • 2015-03-25
相关资源
最近更新 更多