关于getView()的问题

mdv*_*mdv 4 android

任何人都可以解释以下代码的作用吗?

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

   // TODO Auto-generated method stub
   View myView = null;
   try {
    myView = convertView;
    if (null == myView) {
     LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

     myView = li.inflate(R.layout.demographic_list_item, null);

    }
    if (mScan_listItems[position] != null) {
     // read the values and attach them.
     TextView tv1 = (TextView) myView
       .findViewById(R.id.DemoGraphicItem_Text);

     tv1.setText(mScan_listItems[position]);

    }

   } catch (Exception e) {
    e.printStackTrace();
   }

   return myView;
  }

 }
Run Code Online (Sandbox Code Playgroud)

JRL*_*JRL 8

Adapter.getView文档给使用getView的一些提示:

public abstract View getView (int position, View convertView, ViewGroup parent)
Run Code Online (Sandbox Code Playgroud)

获取一个视图,显示数据集中指定位置的数据.您可以手动创建View,也可以从XML布局文件中对其进行充气.当View膨胀,除非你使用膨胀(INT,android.view.ViewGroup,布尔值)指定根视图,并防止附着到根父视图(GridView控件,ListView控件...)将应用默认的布局参数.

位置

项目在我们想要的视图的项目的数据集中的位置.

convertView

如果可能的话,重用旧视图.注意:在使用之前,应检查此视图是否为非null且类型是否合适.如果无法转换此视图以显示正确的数据,则此方法可以创建新视图.

此视图最终将附加到的父级

返回

与指定位置的数据对应的视图.


将为数据集中的每个项调用getView.从Adapter API文档:

Adapter对象充当AdapterView与该视图的基础数据之间的桥梁.适配器提供对数据项的访问.适配器还负责为数据集中的每个项目创建一个View.

  • 释义:对于在屏幕上显示的每个列表项,都会调用getView.如果有7个项目可见,则getView将被调用7次,每个项目一次.膨胀视图是昂贵的,重新膨胀列表项是没有意义的.convertView是使用getView更新的当前列表项.第一次绘制项时,convertView为null.随后的时间,它不会为空,代码不会重新膨胀它.底部只是更新convertView上的一些文本. (3认同)