我有一个自定义列表,每个项目大约有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?
答案 0 :(得分:1)
有谁能告诉我为什么getView方法从0调用两次到3?
getView
方法被调用两次,因为ListView
作为其onMeasure
方法的一部分,调用适配器的getView
方法来获取行的{{1}看他们有多大。我猜您有三个可见的行,因此View
会为前三个可见的孩子调用ListView
方法三次。