是这样的。我从SimpleAdapter继承了一个MySimpleAdapter,同时也继承了一个ListActivity, 并将MySimpleAdapter设置为这个ListActivity的adapter,此时可以正常显示数据,但是发现数据量多余一屏时,滚动屏幕无法更新list。于是我就添加了一个onContentChanged()的函数,发现一添加这个函数(哪怕一句话也不写),程序就会crash,
09-02 17:14:30.694 E/AndroidRuntime( 5794): Caused by: java.lang.NullPointerException
09-02 17:14:30.694 E/AndroidRuntime( 5794): at ndroid.app.ListActivity.setListAdapter(ListActivity.java:265)
有人遇到过这种问题吗,太纠结了
09-02 17:14:30.694 E/AndroidRuntime( 5794): Caused by: java.lang.NullPointerException
09-02 17:14:30.694 E/AndroidRuntime( 5794): at ndroid.app.ListActivity.setListAdapter(ListActivity.java:265)
有人遇到过这种问题吗,太纠结了
解决方案 »
- Android开发多层树型目录的实现
- AndroidManifest.xml文件报错,等待高手
- 求助 android使用surfaceView播放视频时播放窗口为什么不受控制
- Kernel panic - not syncing: out of memory. panic_on_oom is selected 求指导
- setBackgroundResource问题相关
- 请高手帮我一个忙,小弟我搞了几天都没有找到方向!
- Android系统优化,越优越慢???
- 请问MQTT推送判断消息正常到达客户端的方法有哪些?
- 真机通过url访问Mysql+tomcat建立的服务器一直超时
- Android和wifi通信
- android dex文件分析
- onTouchEvent闪屏
数据不更新,应该是你的MySimpleAdapter实现问题。
final class MySimpleAdapter extends SimpleAdapter {
private String [] mFrom;
private int[] mTo;
protected LayoutInflater mInflater;
private int mResourcesId;
private List<Map<String, Object>> mListData = null; SpeedDialAdapter(Context context, List<Map<String, Object>> items,
int resourceId, String[] from, int []to ) { super(context, items, resourceId, from, to);
mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mListData = items;
mResourcesId = resourceId;
mTo = to;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
View v;
if(null == convertView)
{
Log.i(TAG,"geView"); v = mInflater.inflate(mResourcesId, parent, false);
int count = mTo.length;
View[] views = new View[count]; for(int i=0;i<count;i++)
{
views[i] = v.findViewById(mTo[i]);
}
v.setTag(views);
//if(mListData)
Map<String, Object> map = mListData.get(position);
Log.i(TAG, "position is " + position);
String label = map.get(LABEL_KEY) == null? "": map.get("label").toString();
String number = map.get(NUMBER_KEY) == null? "": map.get("number").toString();
String count_label = map.get("count")== null ? "" :map.get("count").toString();
String line = map.get("line") == null? "":map.get("line").toString(); if(number.equals(""))
{
setViewImage(((ImageView)views[ICON_INDEX]),R.drawable.add_icn); }else
{
setViewImage(((ImageView)views[ICON_INDEX]),R.drawable.delete_icn);
} if(line1.equals(""))
{
setViewText(((TextView)views[LINE1_INDEX]),number);
}
else
{
if(number.equals(""))
{
Log.i(TAG,"Error,it should not exist");
}
setViewText(((TextView)views[LINE1_INDEX]),line);
setViewText(((TextView)views[NUMBER_INDEX]),number);
setViewText(((TextView)views[LABEL_INDEX]),label); } if(count_label.equals(""))
{
Log.i(TAG,"no Label");
setViewText(((TextView)views[COUNT_INDEX]),String.valueOf(position));
}
else
{
setViewText(((TextView)views[COUNT_INDEX]),count_label);
} return v; }else
{
return convertView;
} }
@Override
public int getCount()
{
return mListData.size();
}
@Override
public Object getItem(int position) {
return mListData.get(position);
}
}
那自己实现SimpleAdapter需要注意什么? 代码贴上了,帮忙看下问题在哪儿吧,多谢了~