2

我有一个自定义列表,其中包含大约 20 个项目和每个项目三行。我使用 Log 来跟踪如何调用 getView 方法

public View getView(int position, View convertView, ViewGroup parent) {

    Log.e("getView", "at position " + position);
    View view = convertView;

    if (view == null) {
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        view = inflater.inflate(resourceId, parent, false);
    }
            // my code here

}

然后,当列表项加载时,我收到了这个日志

"getView", "在位置 0"; "getView", "在位置 1"; "getView", "在位置 2"; "getView", "在位置 3"; "getView", "在位置 0"; "getView", "在位置 1"; "getView", "在位置 2"; "getView", "在位置 3"; "getView", "在位置 4"; "getView", "在位置 5"; .....................

谁能告诉我为什么 getView 方法从 0 到 3 调用了两次?

4

1 回答 1

1

谁能告诉我为什么 getView 方法从 0 到 3 调用了两次?

getView方法被调用两次ListView,因为作为其方法的一部分,它onMeasure调用getView 适配器的方法来获取行View以查看它们有多大。我猜你有三个可见的行,所以ListView将为前三个可见的孩子调用该getView方法三次。

于 2012-07-28T19:57:02.417 回答