自定义Adapter开发中没有回调getView()的问题
2013-10-28 21:15
162 查看
适配器(Adapter)是安卓开发中经常用到的一类工具,它为我们的后端数据与前端显示提供了良好的接口,常见的适配器view有:ListView、GridView等。今天在开发自定义Adapter的时候遇到了设置setAdapter()之后没有回调自定义的getView()方法来显示想要的界面。贴出代码如下:
class ListDeviceAdapter extends BaseAdapter { ChildListView childlist = null; private Context mContext; private List<Map<String, Object>> mDeviceData; // 设备信息集合 public ListDeviceAdapter(Context context, List<Map<String, Object>> listItems) { this.mContext = context; this.mDeviceData = listItems; System.out.println("-- ListDeviceAdapter is running...--"); } @Override public int getCount() { return 0;//return mDeviceData.size();//首先回调getCount()方法,根据其值来决定是否回调getView() } @Override public Object getItem(int position) { return mDeviceData.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { System.out.println("-- getView is running...--"); if (convertView == null) { System.out.println("-- list is running...--"); childlist = new ChildListView(); convertView = LayoutInflater.from(mContext).inflate(R.layout.listview_control, null); childlist.mDeviceType = (ImageButton) convertView.findViewById(R.id.list_btn_device_type); childlist.mDeviceName = (TextView) convertView.findViewById(R.id.list_text_device_name); childlist.mDeviceControl = (ImageButton) convertView.findViewById(R.id.list_btn_device_type); convertView.setTag(childlist); } else { childlist = (ChildListView) convertView.getTag(); } childlist.mDeviceType.setBackgroundResource(R.drawable.device_light); childlist.mDeviceName.setText(mDeviceData.get(0).get("title").toString()); childlist.mDeviceControl.setBackgroundResource(R.drawable.device_curtain); childlist.mDeviceType.setOnClickListener(new OnClickListener() { public void onClick(View v) { } }); childlist.mDeviceControl.setOnClickListener(new OnClickListener() { public void onClick(View v) { } }); return convertView; } class ChildListView { ImageButton mDeviceType; TextView mDeviceName; ImageButton mDeviceControl; } }
经过反复检查发现自定义Adapter先是回调的getCount()方法,起初返回的是空,Adapter判断其返回值来决定是否回调getView方法。问题就在这里,简单修改其返回值,即返回传人的List数据大小,问题得到解决。
相关文章推荐
- Android自定义ListView或GridView适配器Adapter的getView方法不执行的问题
- 【COCOS2DX-LUA 脚本开发之十四】解决自定义CPP类通过TOLUA++ BINDING LUACOCOS2D后编译到ANDROID运行黑屏(没有调用自定义CPP类)的问题!
- android自定义Adapter中getView()三种写法及其效率问题。
- 自定义adapter时getView多次重复调用的问题
- 【android学习笔记】自定义Adapter继承BaseAdapter获取不到getview或者getview不执行的问题
- Android开发教程--关于onActivityResult没有回调的问题
- ListView和GridView 自定义Adapter的getView()方法调用问题
- 【android学习笔记】自定义Adapter继承BaseAdapter获取不到getview或者getview不执行的问题
- 继承自baseAdapter的自定义适配器无法自动回调getView方法的问题
- 编译类【COCOS2DX-LUA 脚本开发之十四】解决自定义CPP类通过TOLUA++ BINDING LUACOCOS2D后编译到ANDROID运行黑屏(没有调用自定义CPP类)的问题!
- 在sina weibo 开发中遇到的Status数据与Adapter中的getView()方法使用小问题
- 【android学习笔记】自定义Adapter继承BaseAdapter获取不到getview或者getview不执行的问题
- 【COCOS2DX-LUA 脚本开发之十四】解决自定义cpp类通过tolua++ binding LuaCocos2d后编译到Android运行黑屏(没有调用自定义cpp类)的问题!
- 【COCOS2DX-LUA 脚本开发之十四】解决自定义CPP类通过TOLUA++ BINDING LUACOCOS2D后编译到ANDROID运行黑屏(没有调用自定义CPP类)的问题!
- iOS开发中测试机或者模拟器运行时程序没有占整个屏幕问题
- android系统开发小问题-启动过程中android字符没有显示出来
- 面向对象的设计方式处理Android编程中的GridView问题,以及自定义ListAdapter的使用
- Android开发QQ登陆、分享、空间分享及回调处理 不回调问题的处理
- 自定义Adapter,通过复写getView方法,实现ListView中item背景颜色变化
- Android网络开发回顾之旅 ② 新年新气象,封装一个esp8266一键配网XSmartConfig , 支持自定义回调。(附带Demo)