0

我是 ArrayAdapter 的子类,但是通过 getView 的视图是空的?这是为什么?

我必须在 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);       
4

2 回答 2

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;
    }
}
于 2013-04-14T20:41:32.163 回答
0

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

如果它为空,您需要创建您的视图或调用 super(如 ianhanniballake 建议的)。

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

于 2013-04-14T20:48:25.703 回答