Getview在android中多次调用

14 android android-listview

我正在努力重用单元格,目前我正在使用适配器的getview方法,我遇到一个问题,我的getview方法调用了9次,但它应该只在应用程序启动时调用5次,因为我只显示5行.

public View getView(int position, View view, ViewGroup viewgroup) 
{   
    ViewHolder holder=null;

    if(view==null)
      {  
               view = inflater.inflate(R.layout.my_row_layout, viewgroup, false);
              Log.d("Testing","View is nuLL");
                holder.thumbnils  = (ImageView)view.findViewById(R.id.Thumbnils);
                     holder.hover =(ImageButton)view.findViewById(R.id.hover);
                    holder.title  =(TextView)view.findViewById(R.id.title);
                    holder.hoveroverlay  =(ImageView)view.findViewById(R.id.hoveroverlay);
               }view.setTag(holder);
             }
         else
    {
        Log.d("Testing","view is not null");

        holder = (ViewHolder) view.getTag();
       }

          return view;
      }

          @Override
public int getCount() {
    // TODO Auto-generated method stub

    if(data.size()%NumberOfCell==0)
    {
        //return Number rows in listview 
        return data.size() /NumberOfCell;

    }
    else
    {
        //If total number of videos are ODD than display one row extra for remaining videos
        return data.size() /NumberOfCell+1;
    }

}

@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 1;
}

    Here is my xml
Run Code Online (Sandbox Code Playgroud)

<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/imageView2"
    android:layout_alignLeft="@+id/linearLayout1"
    android:layout_below="@+id/linearLayout1"
    android:scrollbars="none"
     android:divider="#000000" 
      android:dividerHeight="2dp"
     >
</ListView>
  </RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

请帮帮我们谢谢.........

Swa*_*oid 63

使listview高度等于fill_parent并再次尝试..

  • @NSArray作为Romain Guy在他的回答中建议这不是一个问题,绝对不能保证调用getView()的顺序也不能保证多少次.在您的特定情况下,通过给它一个height = wrap_content,您可以使用ListView做最糟糕的事情.这会强制ListView在布局时测量适配器中的几个子节点,以了解它应该有多大.这就是为ListView提供您在滚动之前传递给getView()的convertViews. (6认同)