关于Cursor,关于ListView,关于Adapter,关于学习方法

来源:互联网 发布:linux 查看压缩包目录 编辑:程序博客网 时间:2024/06/04 00:23

    先贴一段我今天纠结了7个小时的代码:

public class ListQueryAct extends ListActivity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Variable.cursor.moveToFirst();
//Toast.makeText(this,c.getCount(),Toast.LENGTH_LONG);
//int a=Variable.cursor.getCount();
//String s=Variable.cursor.getString(2);
startManagingCursor(Variable.cursor);
ListAdapter adapter = new SimpleCursorAdapter(
                this,
                R.layout.listcontact,
                Variable.cursor,
                new String[] {"body"},
                new int[] {R.id.people});
Variable.cursor.close();
this.setListAdapter(adapter);

Variable.tempdb.close();
}


}


    这段代码之前已经利用类Variable.cursor保存了查询数据库后的结果集,listcontact.xml中只定义了一个横向的线形布局,只有两个并列的CheckBok和TextView,现在想用ListActivity显示这个结果集,但是这段代码运行后就是显示一段空白,其他什么也没有。

    再三检查代码,完全看不出错误,然后进行adb调试,发现cursor不为空,count=3,Variable.cursor.getString(2)返回的也是一个非空的字符串,但是,纠结了,为什么就是不能显示出来呢?!我的数据到底到哪里去了?!

    遂google了半天,发觉网上有和我一样问题的,貌似代码也和我的差不多,但是没有找到解决办法,人家最后是将cursor中的数据转换到数组集中用ArrayAdapter显示出来了,我也想用这种办法,但是,又觉得不甘心,难道这个问题就没有解决办法了么?!

    然后又找到一条消息让我眼前一亮,说是Variable.cursor.close(),this.setListAdapter(adapter),Variable.tempdb.close()三个的顺序弄错了,满怀希望地将顺序改为上面的参考代码样子的,运行,结果让我有种想砸了电脑的冲动,依然显示空白!!!

    至此,已连续花了三四个小时了,知道现在脑子已经乱成一团了,出去散了个步。

    回来继续研究,google了半天,翻了半天API,依然无果。

    差不多接近崩溃的边缘了,最后打开QQ,找到一个NB的学长,请教了下学长,学长瞟了几秒说,Variable.cursor.close()去掉试试。

    我照做,试了下!我了个擦,果然就行了!

    这时,我也不知道自己什么心情了。

    ListView相当于MVC中的View,数据cursor相当于Model,而Adapter相当于Controller,而我在现实数据之前静关闭了数据源!

    也不知道是第几次遇到这种一个bug调半天的情况了,以前的做法都是静态代码检查->动态调试->详细查看API->上网搜索->问高手,不知道大家都是怎么做的呢?

    有时各种尝试后都失败的那种感觉,真的想当愤怒,想砸了电脑的愤怒,压制着真难受,太伤身了。。。。

原创粉丝点击