0

基本上,我需要将项目添加到数组列表中。我使用单独的类是正确的(这部分是我在这里练习的)还是这是一个愚蠢的想法,因为它基本上只是一个数组列表。我想我会创建一个类,因为我想随机添加它等等。或者,因为它只是一个数组列表类,我应该使用“扩展数组列表”还是类似的东西?代码示例最受欢迎。我显然在这里遗漏了一些关键的编程理论。谢谢你。

注意我已经删除了我认为不相关的代码我有一个主要的:

public class cgame2 extends Activity {

private ArrayList<Integer> cToChooseFromImages; // clear image list

colourlist colourlistused = new colourlist();
colourlist userscolourlist = new colourlist();

....truncated....towards the end of my code I have......
colourlistused.randomaddnewitem();

我有一个类(称为colorlist):

import java.util.ArrayList;
import java.util.Random;
import android.util.Log;

public class colourlist {

private ArrayList<Integer> clist;

private int picked;

int imagetodisp;

public colourlist() {
}

public void randomaddnewitem() {
    Random randomtouse = new Random(System.nanoTime());
    picked = randomtouse.nextInt(3);
    clist.add(picked); // this is where the program crashes according to log info
}
public void addnewitem(int itemtoadd) {
    clist.add(itemtoadd);
}

.....etc.....
4

2 回答 2

2

如果您要向 ArrayList 添加功能,最好的方法就是您已经完成的方法。

创建类的成员 ArrayList 并创建函数来扩展行为。这称为组合。与继承相比,或者创建 ArrayList 的子类,这可能会通过将您的实现不必要地耦合到 ArrayList 来产生更多问题。

不要忘记初始化列表。最好的方法是:

List<Integer> clist = new ArrayList<Integer>();

List如果您选择稍后更改特定的列表实现,请使用该接口使您的代码更加灵活。

于 2012-07-13T16:21:37.030 回答
1

为您的数组列表创建一个类并不是一个坏主意,类本身就是数据结构,这将允许更轻松地操作数据。通过将数组列表放在它自己的类中,您将能够轻松地获取、设置、发送、更改等。但是,在创建类时,您通常希望创建可以被视为对象的类。如果您是初学者,我建议您探索和研究面向对象的分析和设计,因为这将帮助您确定什么应该和不应该是类。

而且,正如其他人指出的那样,请确保初始化数组列表:

List<Integer> clist = new ArrayList<Integer>();

至于扩展ArrayListvs. List,我会使用ArrayList,因为 1. 它具有所有方法和功能List(因为 is 是 的实现List)和 2. 它由数组支持,这就是您正在使用的。只是我的偏好,随意做一些研究,找出最适合你需要的东西;aList可能就是您所需要的,在这种情况下,您应该使用它。

我要指出的另一件事,因为看起来你正在创建一个游戏,如果你要通过和反对,在你的情况下ArrayList,你会想要熟悉Parcelable界面。这将允许您将数据从一个活动传递到另一个活动。这是一个可以帮助您入门的链接,以及一个可能会提供一些洞察所需内容的教程:

教程Parceleable

http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/

开发者信息:

http://developer.android.com/reference/android/os/Parcelable.html

祝你好运!

于 2012-07-13T16:42:10.103 回答