使用 SQLite 的 Android 简单 ListFragment
Posted
技术标签:
【中文标题】使用 SQLite 的 Android 简单 ListFragment【英文标题】:Android Simple ListFragment using SQLite 【发布时间】:2015-05-05 13:37:02 【问题描述】:我正在尝试创建一个简单的 ListFragment,我已使用标准列表活动成功运行它,但我现在尝试使用 ListFragments 来实现它。
我要做的是在 Listfragment 中显示 SQLite 数据。如何将 ListNotes 传递给 Notes 片段?
public class Notes extends Fragment
NotesControl control;
DatabaseHelper help;
SimpleCursorAdapter adapter;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
View view = inflater.inflate(R.layout.fragment_notes, container, false);
Cursor cursor = control.ListNotes();
//Mapping the fields cursor to text views
String[] fields = new String[]help.COLUMN_TITLE, help.COLUMN_DATE;
int [] text = new int[] R.id.item_title, R.id.item_date;
adapter = new SimpleCursorAdapter(view.getContext(),R.layout.list_layout,cursor, fields, text);
ListView listView = (ListView) view.findViewById(android.R.id.list);
listView.setAdapter(adapter);
return view;
笔记控件
public Cursor ListNotes()
我该如何查询?我可以在哪里存储数据库数据以传回我的列表视图?
【问题讨论】:
自定义适配器是开始的好方法... @jvrodrigues NotesControl 保存我对数据库的所有查询,我的自定义适配器将保存什么?我需要另一个xml文件吗?你有例子吗? 【参考方案1】:尝试使用SimpleCursorAdapter
:
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,
cursor,
new String[] help.COLUMN_TITLE ,
new int[] android.R.id.text1 );
ListView listView = (ListView) findViewById(R.id.list);
listView.setAdapter(adapter);
唯一的问题是您的光标上需要一个名为“_id”的 id 列才能使其工作,因此要么更改列名,要么使用 'SELECT ' + help.NOTES_ID + ' AS 执行rawQuery()
_id ...'
【讨论】:
你能写出完整的查询吗?这会进入我的 onCreateView 或 onActivityCreated 吗?从代码中,这将只返回标题而不返回描述吗?我需要一个自定义适配器来显示描述 您可以为列表项创建任何布局并使用它来代替 android.R.layout.simple_list_item_1。 String 数组获取光标的列,并在 int[] 数组中放置您创建的布局中的视图 ID,以放置您选择的列。网上和 *** 上有很多关于该主题的教程,只需 google simplecursoraapter 即可。以上是关于使用 SQLite 的 Android 简单 ListFragment的主要内容,如果未能解决你的问题,请参考以下文章