通过新建一个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/