我是子类化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);
答案 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中的缓存功能,使其响应更快。