2012-08-25 70 views
5

我會修改主/明細模式中由eclipse生成的項目。我找不到辦法做到這一點。特別是我會從XML(res/values/arrays)資源文件中獲取項目。如何修改android主/明細活動中的虛擬內容?

這是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); 
    } 
} 

回答

0

我有同樣的問題,但insted的從一個陣列採取一切價值,我改變

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; 

希望它能幫助你。

5

一個可能的解決方案:

由您自己更換靜態類。在我的情況下,DummyItem變成ProfileItem並且具有不同的屬性,並且DummyContent變成ProfileListContent

然後用靜態方法替換靜態塊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項目的佈局,我提供an example here

+0

因爲這個被生成的每個你犯了一個列表或主/詳細活動時間,我用一個快捷方式是:點擊軟件包和類文件,然後使用shift + F6來重構名稱,然後打開文件,只需將'ctl + R'替換爲我想要的任何內容並從那裏開始。 – mkrinblk

0

這是爲我工作的東西,不知道這是否是最佳做法。 刪除靜態塊上的OncreateItemListActivity.java添加以下代碼

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

希望這有助於