使用Eclipse生成的List Fragment中的XML资源

时间:2013-05-12 06:51:20

标签: java android arraylist

我使用Eclipse生成了一个新的List Fragment( New - &gt; Android Object - &gt; New List Fragment ),它创建了ItemFragmentdummy.DummyContent类。< / p>

我有两个问题:

  1. 更多一般性问题...... 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);
    }
    
  2. 在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;
        }
    }
    }
    
  3. 提前致谢,如果问题中有任何不明确之处,请告诉我。

1 个答案:

答案 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
}