是这样的。我从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)
有人遇到过这种问题吗,太纠结了
解决方案 »
- 请教关于 View.OnClickListener() 的问题
- 扶松柏的《Android开发从入门到精通》视屏教程奉献给大家
- An SDK Target must be specified.的另类故障,气死我啦!
- removeTab什么情况下删除不了tab
- android里实现爆炸效果与j2me有啥区别?
- android如何获取网页数据?思路正确马上结贴不纠结。
- 用DrawerLayout(Support Library 4提供)开发侧边栏,有没有什么方法关闭手势控制?
- android sim卡
- SimpleAdapter绑定html代码的问题
- 我用webview写的扫码查询,我把扫码值放到Session里,但每次退出在进入依然显示之前查询的内容
- 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需要注意什么? 代码贴上了,帮忙看下问题在哪儿吧,多谢了~