0

基本的に、配列リストに項目を追加する必要があります。別のクラスを使用するのは正しいですか(これは部分的にここで練習していることです)、それとも基本的に単なる配列リストであるため、それは愚かな考えです。クラスへの追加などをランダム化したいので、クラスを作成しようと思いました。あるいは、それは単なるarraylistクラスなので、「extendsarraylist」などを使用する必要がありますか?コード例は大歓迎です。私は明らかにここでいくつかの重要なプログラミング理論を見逃しています。ありがとうございました。

私はメインを持っている無関係なコードであると思うものを削除しました:

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

そして私はクラス(カラーリストと呼ばれる)を持っています:

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.の拡張に関しては、1. ( は の実装であるため)のすべてのメソッドと機能を備えているため、List使用します。2. 使用している配列によってサポートされています。私の好みですが、自由に調査を行って、必要なものに最適なものを見つけてください。必要なのはaだけかもしれません。その場合は、それを使用する必要があります。ArrayListListListList

あなたがゲームを作成しているように見えるので、私が指摘するもう1つのことは、パスして反対する場合、あなたの場合と、インターフェース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 に答える