Android:从数据库中获取数据到ListFragment

时间:2012-07-10 08:03:38

标签: android database fragment

从数据库中获取数据到LisFragment中。我需要将此ListFragment文件内容用于MainActivity.java。

扩展ListFragment的SecondActivity:

String DB = "TestDB";
String TABLE_NAME = "addcamera";
SQLiteDatabase sampleDB = null;
ArrayList<String> results = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sampleDB =  SQLiteDatabase.openOrCreateDatabase(DB, null);          
Cursor c = sampleDB.rawQuery("SELECT CameraName FROM " + TABLE_NAME , null);            
if (c != null) {
if  (c.moveToFirst()) {
do {
    String CameraName = c.getString(c.getColumnIndex("CameraName"));
    results.add(CameraName);
    }while (c.moveToNext());
} 
} 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, results);
}

main.xml中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
 <fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="com.exercise.FragmentTest.SecondActivity"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/image_list_fragment">
 </fragment>
</LinearLayout>

有人能帮忙吗?

1 个答案:

答案 0 :(得分:4)

嗯,第一件事是第一件事 - 你的Activity不应该延伸ListFragment,你自己的Fragment课应该这样做。希望我没有误解任何事情。 : - )

但是,您可以轻松地将ListFragment衍生产品视为ListActivity,即您可以使用getListView()方法获取ListView对应的元素({{1}来自您的XML。

看到你已经准备好@android:id/list,你应该考虑使用Cursor并让它为你管理光标,你需要做的就是指定填充元素的字段用。

示例:

SimpleCursorAdapter

更新:

以下是您的自定义ListFragment的样子:

getListView().setAdapter( 
    new SimpleCursorAdapter(
        getActivity(),
        R.layout.your_list_item_layout,
        cursor,
        new String[] { "database_table_1", "database_table_2" },
        new int[] { R.id.element_1, R.id.element_2 }

    )
);