Android:系统在创建活动时调用getView两次

时间:2012-07-28 18:20:55

标签: android android-listview

我有一个自定义列表,每个项目大约有20个项目和3个行。 我使用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?

1 个答案:

答案 0 :(得分:1)

  

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

getView方法被调用两次,因为ListView作为其onMeasure方法的一部分,调用适配器的getView方法来获取行的{{1}看他们有多大。我猜您有三个可见的行,因此View会为前三个可见的孩子调用ListView方法三次。