从数据库中获取数据到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>
有人能帮忙吗?
答案 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 }
)
);