我会在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);
}
}
答案 0 :(得分: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。
答案 1 :(得分: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;
希望它会对你有所帮助。
答案 2 :(得分: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)));
}
希望这有帮助