0

我使用 Eclipse ( New -> Android Object -> New List Fragment ) 生成了一个新的列表片段,它创建ItemFragmentdummy.DummyContent类。

我对此有两个问题:

  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 类中,我想ArrayList<DummyItem> ITEMS用从 Resource XML 文件中提取的数据填充,但是似乎因为我不在Context这个 DummyContent 类中,所以我无法访问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;
        }
    }
    }
    

提前致谢,如果问题中有任何不清楚的地方,请告诉我。

4

1 回答 1

0

更多一般性问题...... DummyContent 是如何实例化的?ArrayAdapter 的声明是否有效?因为我在代码中的任何地方都看不到新的 DummyContent。

它没有被实例化,它的所有字段和方法都static意味着可以在不需要该类的实例的情况下引用它们。查看有关静态类/字段/方法的任何文档/教程以获取更多信息。

在 DummyContent 类中,我想用从 Resource XML 文件中提取的数据填充 ArrayList ITEMS,但似乎因为我在这个 DummyContent 类中没有上下文,所以我无法访问 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
}
于 2013-05-12T07:55:42.437 回答