6

master/detailスキーマのeclipseによって生成されたアイテムを変更します。これを行う方法が見つかりません。特に、xml(res / values / arrays)リソースファイルからアイテムを取得します。

これはJavaファイルです:

package com.ga.termeapp.dummy;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class DummyContent {

    public static class DummyItem {

        public String id;
        public String content;

        public DummyItem(String id, String content) {
            this.id = id;
            this.content = content;
        }

        @Override
        public String toString() {
            return content;
        }
    }

    public static List<DummyItem> ITEMS = new ArrayList<DummyItem>();
    public static Map<String, DummyItem> ITEM_MAP = new HashMap<String, DummyItem>();

    static {

        addItem(new DummyItem("1", "Le terme"));
        addItem(new DummyItem("2", "Le cure termali"));
        addItem(new DummyItem("3", ""));
    }

    private static void addItem(DummyItem item) {
        ITEMS.add(item);
        ITEM_MAP.put(item.id, item);
    }
}
4

3 に答える 3

6

可能な解決策:

静的クラスを独自のものに置き換えます。私の場合、と は異なる属性を持ち、 となりDummyItemます。ProfileItemDummyContentProfileListContent

次に、静的ブロックstatic { addItem ... }を静的メソッドに置き換えます。次のケースでは、データベースから項目をロードする必要があります:

public static void setContext(Context c) {
    if (db == null) db = new MyDbAdapter(c); // SQLiteOpenHelper + SQLiteDatabase manager
    if (db.isOpen() == false) {
        db.open();
        Cursor c = db.getProfiles(); // database query
        if (c.moveToFirst()) {
            do {
                ProfileItem item = new ProfileItem(c.getString(0), c.getString(1),
                    c.getString(2));
                addItem(item);
            } while (c.moveToNext());
        }
    }
}

他の操作の前setContextに、メソッドの開始時にメイン アクティビティからメソッドを呼び出します。onCreate

public void onCreate(Bundle savedInstanceState) {
    ProfileListContent.setContext(this);
    ...

項目を動的に追加する場合:

public static void insertProfile(ProfileItem profile) {
    db.insertProfile(profile); // add item to the database
    addItem(profile); // the same addItem provided with the eclipse wizard
}

もちろん、ListView アイテムのレイアウトを変更することもできます。ここに例を示します。

于 2012-10-18T14:22:59.143 に答える
0

同じ問題が発生しましたが、変更した配列からすべての値を取得する必要がありました

addItem(new DummyItem("1", "Le terme"));
addItem(new DummyItem("2", "Le cure termali"));
addItem(new DummyItem("3", ""));

これらのaddItemを編集しました。次に、アイテムに文字列を追加する場合は、コードのこの部分をすべて編集する必要があります。

    public String id;
    public String content;

    public DummyItem(String id, String content) {
        this.id = id;
        this.content = content;

それがあなたを助けることを願っています。

于 2012-08-29T09:59:18.167 に答える
0

これは私にとってはうまくいったものですが、それがベストプラクティスであるかどうかはわかりません。静的ブロックを削除し、ItemListActivity.javaこのOncreateコードを追加します

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    if (DummyContent.ITEMS.isEmpty())
    {
        DummyContent.addItem(new DummyItem("1", getResources().getString(R.string.menu1)));
        DummyContent.addItem(new DummyItem("2", getResources().getString(R.string.menu2)));
        DummyContent.addItem(new DummyItem("3", getResources().getString(R.string.menu3)));
    }

お役に立てれば

于 2013-02-06T14:31:16.020 に答える