针对相同位置多次调用适配器getView,如何知道屏幕上会出现什么视图?

时间:2013-05-23 13:12:22

标签: android android-activity adapter

我知道为什么多次调用适配器的getView方法的原因,但有没有办法知道哪些返回的视图将实际显示在活动上?

到目前为止,我将所有返回的视图链接到列表中的相同位置,每次我需要修改显示的视图时,我修改对应于该位置的所有视图(其中一个将是正确的... )。 当然不是最好的方式......

这是我的适配器的一段代码:

class MyAdapter extends BaseAdapter {
    Vector<ImageView> vectorView[] = new Vector<ImageView>[25];
    public MyAdapter(Activity context) {
        ...
    }

    public doSomeStuffOnAView(int position) {
        // needs to know which view corresponds to the given position
        // in order to avoid the following for cycle
        for (ImageView iv: vector[position]) {
            // do something
        }

    }

    public View getView(int position, ...) {
        ImageView childView = ...;
        if (vector[position]==null) {
            vector[position]=new Vector<ImageView>();
        }
        vector[position].add(childView);
        return childView;
    }
}

方法getView(...)可能会针对每个位置多次调用,但每个位置只返回一个返回的视图将显示在活动上。我需要知道其中的哪一个。我认为这是最后一次调用getView时返回的位置,但现在总是如此。

1 个答案:

答案 0 :(得分:0)

单向但不标准..你可以用整数变量直接检查,即硬编码类型。您的xml文件中包含视图列表。 jst cross check&amp;与整数变量进行比较。