我使用Eclipse生成了一个新的List Fragment( New - > Android Object - > New List Fragment ),它创建了ItemFragment
和dummy.DummyContent
类。< / p>
我有两个问题:
更多一般性问题...... DummyContent如何实例化? ArrayAdapter的声明是否正常工作?因为我没有在代码中看到任何新的DummyContent。见下文:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO: Change Adapter to display your content
mAdapter = new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
android.R.layout.simple_list_item_1, android.R.id.text1,
DummyContent.ITEMS);
}
在DummyContent类中,我想用从资源XML文件中提取的数据填充ArrayList<DummyItem> ITEMS
,但是因为我没有在这个DummyContent类中使用Context
,我无法访问R.xml.*
有没有办法以某种方式将上下文传递给该类?
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"));
}
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;
}
}
}
提前致谢,如果问题中有任何不明确之处,请告诉我。
答案 0 :(得分:0)
更多一般性问题...... DummyContent如何实例化?是 ArrayAdapter的声明在做什么工作?我没有看到 在代码中的任何地方都有一个新的DummyContent。
它没有实例化,它的所有字段和方法都是static
,这意味着它们可以在不需要该类实例的情况下被引用。有关更多信息,请查看有关静态类/字段/方法的任何doc / tutorial。
在DummyContent类中,我想填充 ArrayList ITEMS从资源XML文件中提取数据, 但是看起来因为我没有这个DummyContent类中的Context, 我无法访问R.xml。*有没有办法将上下文传递给它 不知怎的??
一个选项是保留当前的DummyContent
类,并在片段级别执行xml解析,并将解析后的数据传递给DummyContent
类。
要将Context
传递给DummyContent
类,请为其创建构造函数,如下所示:
public class DummyContent {
private Context mContext;
public DummyContent(Context context) {
mContext = context;
}
//...
然后你就可以做到:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DummyContent dc = new DummyContent(getActivity());
// do the parsing in the DummyContent: dc.doParsing()
mAdapter = new ArrayAdapter<DummyContent.DummyItem>(getActivity(),
android.R.layout.simple_list_item_1, android.R.id.text1,
DummyContent.ITEMS); // assuming that you keep the ITEMS ArrayList static
}