gpt4 book ai didi

java - Android:针对不同自定义对象的自定义 ArrayAdapter

转载 作者:搜寻专家 更新时间:2023-11-01 08:53:59 29 4
gpt4 key购买 nike

我有许多自定义对象,它们彼此之间有很大的不同。这些对象存储在不同的列表中,要显示在不同的ListView中。由于这些 ListView 的设计,我需要创建自己的自定义 ArrayAdapter。问题是,无论列表中的对象如何,所有 ListView 的 ListView 设计都应该是相同的。

为了实现这一点,我为每种类型的对象创建了一个 ArrayAdapter。例如。对于自定义对象 coA,我制作了一个 ArrayAdapter coAAdapter,对于自定义对象 coB,我制作了一个 ArrayAdapter coBAdapter。这对我来说似乎非常不必要,因为除了自定义适配器扩展的 ArrayAdapter 类型及其构造函数之外,这些适配器之间几乎没有区别:

CoA 类适配器:

public class CoAAdapter extends ArrayAdapter<CoA> {
public CoAAdapter (Context context, int resource, List<CoA> objects) {...}
}

CoB 类适配器:

public class CoBAdapter extends ArrayAdapter<CoB> {
public CoBAdapter (Context context, int resource, List<CoB> objects) {...}
}

这是自定义 ArrayAdapter 应该如何使用,还是有办法让这个设计更简单,比如为所有自定义对象使用一个自定义 ArrayAdapter?

我考虑过一些不同的解决方案,例如创建通用自定义适配器或通过为我的自定义对象创建通用基类来使用继承,但经过一些研究后,这些似乎都不是好的方法。

最佳答案

你可以这样定义你的适配器:

 public class MyArrayAdapter<T> extends ArrayAdapter<T> 
{
HashMap<T, Integer> mIdMap = new HashMap<T, Integer>();

public MyArrayAdapter(Context context, int textViewResourceId, List<T> objects) {
super(context, textViewResourceId, objects);
for (int i = 0; i < objects.size(); ++i) {
mIdMap.put(objects.get(i), i);
}
}
}

关于java - Android:针对不同自定义对象的自定义 ArrayAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20607600/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com