0

私を夢中にさせている小さな問題があります。Java クラス「スレッド」を拡張するクラス (アクティビティではない) があります。この cass では、いくつかの PostJson 変数を Run() メソッドにダウンロードします。

この Run() メソッドで、オブジェクトのコンストラクターを呼び出し、ダウンロードしたばかりの Json 変数をチェックして、新しいオブジェクトを作成します。これらはすべて、JsonPost のコレクションごとに新しいオブジェクトを作成する for cicle にあります。

  public class GetChargePoint extends Thread{


    JSONObject obj;
    JSONArray jArray;
    InputStream inputStream = null;
    Handler handler;

    private ConnectionSource connectionSource;

    public ArrayList<ChargePoint_db> chargePointList = null;

    public GetChargePoint(Handler handler) {
        super();

        this.handler = handler;
        try {

        } catch (MalformedURLException ex) {

            ex.printStackTrace();
        }
    }


@Override
    public void run() {

        ...

            for (int i = 0; i < jArray.length(); i++) {
                try {
                    JSONObject oneObject = jArray.getJSONObject(i);

                    String name = oneObject.getString("Name");
                    String address = oneObject.getString("Address");
                    String description = oneObject.getString("Description");
                    String ownerTelNumber = oneObject
                            .getString("OwnerTelNumber");
                    String serialNumber = oneObject.getString("SerialNumber");
                    String dateModified = oneObject.getString("DateModified");
                    String id = oneObject.getString("Id");

                    int pointModelId = oneObject.getInt("PointModelId");
                    int maxNominalPowerKw = oneObject
                            .getInt("MaxNominalPowerkW");

                    boolean hasAcceleratedCharge = oneObject
                            .getBoolean("HasAcceleratedCharge");

                    boolean isInMaintenance = oneObject
                            .getBoolean("IsInMaintenance");
                    boolean active = oneObject.getBoolean("Active");
                    boolean isDeleted = oneObject.getBoolean("IsDeleted");
                    boolean hasFastCharge = oneObject
                            .getBoolean("HasFastCharge");

                    double latitude = oneObject.getDouble("Latitude");
                    double longitude = oneObject.getDouble("Longitude");


//calling the constructor.
                    Object object= new Object(id,
                            serialNumber, name, description, address,
                            maxNominalPowerKw, hasAcceleratedCharge,
                            hasFastCharge, ownerTelNumber, false, pointModelId,
                            active, isInMaintenance, 0, dateModified, latitude,
                            longitude);

                    chargePoint.save(repo);
                    chargePointList.add(object);

...

ここまでは順調ですね。しかし、ご覧のとおり、作成したすべての新しいオブジェクトを ArrayList "chargePointList に入力します。

問題は、別のアクティビティでこのクラスを呼び出して ArrayList を取得すると、null が返されることです。クラスと他のアクティビティの間で塗りつぶされた配列リストを共有するにはどうすればよいですか??

ありがとう :)

4

2 に答える 2

0

GetChargePoint クラスの run メソッドは、Activity クラスのイベントから呼び出されます。そのため、呼び出し元の Activity クラスにリストを返すことができます。次に、リストをアクティビティから別のアクティビティに渡すことができます。

if(list!= null && list.size() > 0)
{
    Intent intent = new Intent(MainActivity.this,NextActList.class);
    intent .putExtra("list", list);                 
    intent .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(drugIntent);
}else{


}
于 2013-07-23T07:47:10.293 に答える