通过Activity设置动态Fragment中的ListView(通过SimpleCursorAdapter适配)

来源:互联网 发布:linux使用 编辑:程序博客网 时间:2024/05/01 16:09

  最近 博主在设计一个项目 ,通过activity 动态将   布局文件中的一块区域   动态的设定 为不同的Fragment ,现在面临的一种情况是 ,目前的Fragment中有一个button和一个ListView,要实现的效果是,点击Button时,系统会读取 数据库文件  ,从数据库中读取需要的 数据 在 这个Fragment中的ListView 上显示

  首先,数据库和各项信息都已经配置好 , 没有问题。

  刚开始的操作时,通过查询语句 获得 Cursor,通过SimpleCursorAdapter 来实现填充,代码如下:

首先获得ListView

lv =   getLayoutInflater().inflate(R.layout.ListView,null);
然后通过 下面代码进行填充

adapter = new SimpleCursorAdapter(word_activity.this,R.layout.wordlist        ,cursor_c,new String[]{"word","shiyi"},new int[]{R.id.word_t,R.id.shiyi_t},
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);lv.setAdapter(adapter);
这里需要注意一下 , 如果要使用 Curcor进行填充的话,需要你 数据库中表 要包含 _id的列,这是必须的!

还需要注意的是  在填充期间  不能关闭 curcor  否则会造成 数据填充失败!


然后运行的结果是:curcor中有文件  ,但是 ListView中没有显示!


后面 看  Android Monitor 中 ,发现系统提示  ListView  指针是空的 怎么会呢?

然后 尝试了一下 ,利用 FragmentManager来获得 控件 ,代码如下:

FragmentManager fm = getFragmentManager();final ListView lv = (ListView)fm.findFragmentById(R.id.word_main).        getView().findViewById(R.id.word_list);
在进行测试 一切正常!!!!


分析:

  Inflater.inflate()是用来获取 布局文件的  这很重要 ,但是这个函数也仅仅是用来获取布局文件的  不能用来获取控件  一直都没有注意到 !

 获取控件 还是需要 通过 先获取 Fragment 然后逐步 获取 控件!

  

1 0
原创粉丝点击