基本上,我需要在arraylist中添加项目。我是否正确使用一个单独的类(这部分是我在这里练习的)或者是一个愚蠢的想法,因为它基本上只是一个arraylist。我以为我会创建一个类,因为我想随机添加它,等等。或者,因为它只是一个arraylist类,我应该使用“extends arraylist”或类似的东西???代码示例最受欢迎。我显然在这里缺少一些关键的编程理论。谢谢。
注意我删除了我认为不相关的代码 我有一个主要的:
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();
我有一个班级(称为colourlist):
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.....
答案 0 :(得分:2)
如果您要向ArrayList添加功能,最好的方法就是完成它。
创建类的成员ArrayList并创建函数以扩展行为。这称为组合。 与继承对比,或创建ArrayList的子类,这可能通过不必要地将您的实现耦合到ArrayList来创建更多问题。
不要忘记初始化列表。最好的方法是:
List<Integer> clist = new ArrayList<Integer>();
如果您选择稍后更改特定列表实施,请使用界面List
使您的代码更加灵活。
答案 1 :(得分:1)
为数组列表创建一个类并不是一个坏主意,类本身就是数据结构,这样可以更容易地操作数据。通过将数组列表放在它自己的类中,您将能够轻松地获取,设置,发送,更改它等。但是,在创建类时,通常需要创建可以视为对象的类。如果您是初学程序员,我建议您探索和研究面向对象的分析和设计,因为这将帮助您确定应该和不应该是什么类。
而且,正如其他人所指出的那样,请确保初始化数组列表:
List<Integer> clist = new ArrayList<Integer>();
至于ArrayList
与List
的延伸,我会使用ArrayList
因为1.它具有List
的所有方法和功能(因为它是一个实现List
)和2.它由一个数组支持,这就是你正在使用的。只是我的偏好,随意做一些研究,找出最适合你需要的东西;可能只需要List
,在这种情况下,您应该使用它。
我要指出的另一件事,因为看起来你正在创造一个游戏,如果你要传递和反对,在你的情况下ArrayList
,你会想要熟悉使用Parcelable
界面。它允许您将数据从一个活动传递到另一个活动。这是一个可以帮助您入门的链接,以及可能提供所需内容的教程:
Parceleable
的教程:
开发者信息:
http://developer.android.com/reference/android/os/Parcelable.html
祝你好运!