java - 如何将主从流主题与动态数据一起使用?

标签 java android

通过新建一个android项目,选择master detail flow theme,这会提供一个如何使用这个主题的sample,这很好。我的问题是这个例子使用静态数据,我需要它是动态的。我的应用程序使用异步任务以 JSON 格式从服务中获取数据,然后解析它并将其保存在手机数据库中。

这是 DummyContent 类:

public class DummyContent {

    /**
     * An array of sample (dummy) items.
     */
public static List<DummyItem> ITEMS = new ArrayList<DummyItem>();

/**
 * A map of sample (dummy) items, by ID.
 */
public static Map<String, DummyItem> ITEM_MAP = new HashMap<String, DummyItem>();

//  static {
//      // Add 3 sample items.
//      addItem(new DummyItem("1", "Item 1"));
//      addItem(new DummyItem("2", "Item 2"));
//      addItem(new DummyItem("3", "Item 3"));
//  }

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

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

/**
 * A dummy item representing a piece of content.
 */
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;
    }
}

你可以看到我注释了静态数据并添加了“setContext”,它应该被调用以从数据库添加数据。我的问题是我应该在何时何地调用此函数以便显示数据?我应该在“kind_name_ListFragment.java”“onCreate”或“kind_name_DetailFragment.java”“onCreate”或两者(如果两者都不是多余的)或其他地方调用它,是否有更好的解决方案?

最佳答案

My issue is that this example uses a static data and I need it to be dynamic

最直接的方法是在访问 DummyContent.ITEMS 之前调用 DummyContent.setContext(Context):

(kind_name_ListFragment.java)
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Call to initialize DummyContent.ITEMS
    DummyContent.setContext(getActivity());

    setListAdapter(new ArrayAdapter<DummyContent.DummyItem>(getActivity(), 
                                  android.R.layout.simple_list_item_activated_1,
                                      android.R.id.text1, DummyContent.ITEMS));

}

每当您需要初始化/更新/刷新 ITEMS 和 ITEM_MAP 时,您都需要调用 DummyContent.setContext(getActivity())。也许,在 setContext(Context) 的开头调用 ITEMS.clear()ITEM_MAP.clear() 会在刷新时有所帮助数据。

Should I call it in the "kind_name_ListFragment.java" "onCreate" or "kind_name_DetailFragment.java" "onCreate" or both (If both wont that be redundant) or somewhere else

如上所述在 kind_name_ListFragment.onCreate(Bundle) 中调用一次,在 setListAdapter(...) 之前。无需在 kind_name_DetailFragment.onCreate(Bundle) 中再次调用它。当您需要更新/刷新数据时:

DummyContent.setContext(getActivity());
((YourAdapter)getListAdapter()).notifyDataSetChanged();

关于java - 如何将主从流主题与动态数据一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622985/

相关文章:

android - 没有 google-services.json,Google 服务插件无法运行

java - 插入赋值运算符表达式以完成eclipse错误中的表达式

java - 如何使用 Apache Edgent 过滤元组流

android - BLE 4.0/4.1 支持Android 64字节数据传输

java - 线性布局网格在模拟器中显示但在设备上不显示,可能是什么原因?

android - 9-patch 效果不佳

java - 从目录中删除文件

java - 如何将mysql中的select语句转换为java中的查询?

c# - Java Socket 服务器和客户端 Socket C# 问题

android - 在 Visual Studio 中创建新的 native 应用程序 (Android) 时出错