0

我正在尝试使用 ArrayAdapter 从对象生成列表。结果看起来像:

项目 A (3) 项目 B (1) 项目 C (0)

括号中的数字表示该文件后面的项目数量。我想在括号中有 1 时显示图像 - 在这种情况下仅适用于 B 项。

我有一个可用的属性图像,只有在项目有 1 时才设置为真。

但是,当我创建列表时,它会在任何地方创建图像,除了在项目 C 中。我创建了一个简短的日志来尝试了解原因并发现,该public View getView(int position, View convertView, ViewGroup parent) { 方法被调用多达 11 次......虽然1st 3 应该足够了。当我修改我的 if 子句时,它应该在检测到项目时将 imageavailable 设置为 false - 只有第一个项目有图片。谁能帮我吗?(我也尝试让 if(imageavailable&number==1) 产生相同的结果 - 1st 2 有一张图片

4

1 回答 1

0

您应该管理适配器,而不是向 getView 添加逻辑。您处理适配器的逻辑应该在它自己的方法中。例如:

ArrayList<Drawable> adapter = new ArrayList<Drawable>();

void constructAdapter(List<Drawable>... drawables, int sizeFilter) {
    if (drawables != null) {
        for (List<Drawable> l : drawables) {
            if (drawable.size() == sizeFilter) {
                for (int i = 0; i < sizeFilter) {
                    adapter.add(l.get(i));
                }
            }
        }
    }
}

然后从这里您将适配器列表传递给您的阵列适配器。

注意:我用 drawable 作为我的例子,因为你说的是​​图像。这可以是任何你想要的,只要你改变逻辑来处理那个特定的数据集。

于 2013-01-15T15:55:23.080 回答