我需要访问activity类的ArrayList对象,以获得要在可扩展列表视图中显示的值。
public static HashMap<String, List<String>> getData() {
//here i need access the arraylist object
HashMap<String, List<String>> expandableListDetail = new HashMap<String, List<String>>();
List<String> size = new ArrayList<String>();
size.add("Regular");
size.add("Large");
List<String> Addons = new ArrayList<String>();
Addons.add("one small cheese");
Addons.add("chicken");
expandableListDetail.put("Choice of Size", size);
expandableListDetail.put("Choice of Add ons", Addons);
return expandableListDetail;
}
在活动中创建一个静态ArrayList(例如:itemList(
static ArrayList<Item> itemList = new ArrayList<>();
访问创建的数组列表,如下所示,
ArrayList<Item> list = YOURACTIVITYNAME.itemList;
您可以轻松创建两个独立的函数,一个用于创建size
,另一个用于生成Addons
。然后在您的Activity
中,只需调用函数来设置expandableListDetail
。
expandableListDetail.put("Choice of Size", getSizes());
expandableListDetail.put("Choice of Add ons", getAddons());
因此,基本上,您只需要将getData
方法分为两部分,并为Activity
提供必要的列表。
您有一个静态函数,需要在静态方法中访问活动类的普通ArrayList对象,因此,static关键字的规则是,如果您有静态函数,那么在静态函数中,所有成员都必须是静态的。
对于您的情况,您需要使活动类的ArrayList对象为静态对象,然后在尝试之后。
您只需要在活动中将ArrayList设置为公共和静态,如下所示。
public static ArrayList<String> myList;
并在getData((方法中的另一个类中使用这个数组列表,如下面的
ActivityName.myList;