在子类化ArrayAdapter中,进入getView的视图为空?为什么?

时间:2013-04-14 20:36:28

标签: android android-listview

我是子类化ArrayAdapter,但是到getView的视图是null?这是为什么?

我必须在getView方法中手动指定视图。视图来自哪里发送到此方法?

public class CustomList2 extends ArrayAdapter<String>
{
    public CustomList2(Context context, int layout_id, ArrayList<String> objects){
        super(context, layout_id, objects);
    }

    @Override
    public View getView(final int position, View view, ViewGroup view_group) {
       if(view == null) 
       {
           LayoutInflater inflater = getLayoutInflater();
           view = inflater.inflate(R.layout.customlist, null);
       }
      return view;
    }
}

适配器和视图设置如下:

video_list = (ListView)findViewById(R.id.list);
video_list.setAdapter(adapter);       

2 个答案:

答案 0 :(得分:2)

您需要调用超类“getView方法来获取默认行为:

public class CustomList2 extends ArrayAdapter<String>
{
    public CustomList2(Context context, int layout_id, ArrayList<String> objects){
        super(context, layout_id, objects);
    }

    @Override
    public View getView(final int position, View view, ViewGroup view_group) {
        view = super.getView(position, view, view_group);
        // Do something special with the view
        return view;
    }
}

答案 1 :(得分:0)

当没有要重用的视图时,发送到getView的View可能为null。

如果为null,则需要创建View或调用super(如ianhanniballake建议的那样)。

这是ListView中的缓存功能,使其响应更快。