处理在自定义类中创建的arraylists(新手混淆)

时间:2012-07-13 16:07:15

标签: android class arraylist

基本上,我需要在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.....

2 个答案:

答案 0 :(得分:2)

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

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

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

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

如果您选择稍后更改特定列表实施,请使用界面List使您的代码更加灵活。

答案 1 :(得分:1)

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

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

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

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

我要指出的另一件事,因为看起来你正在创造一个游戏,如果你要传递和反对,在你的情况下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

祝你好运!