[英]How to fetch data to listview?
fragment_history.xml(由一個列表視圖組成):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".HistoryFragment">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list_View"
/>
</LinearLayout>
我正在嘗試從數據庫中獲取數據到列表視圖中。
歷史片段.java:
public class HistoryFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_history, container, false);
ListView lw = view.findViewById(R.id.list_View);
MyDatabaseHelper myDB = new MyDatabaseHelper(getActivity());
List<ContactModel> data = myDB.fetchData();
ArrayAdapter<ContactModel> adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, data);
lw.setAdapter(adapter);
return view;
}
}
在 MyDatabaseHelper.java 中獲取 function(完整代碼):
public List<ContactModel> fetchData(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
List<ContactModel> data = new ArrayList<ContactModel>();
if(cursor.moveToFirst()){
do {
data.add(new ContactModel(cursor.getString(0), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4),cursor.getString(5)));
}while(cursor.moveToNext());
}
cursor.close();
return data;
}
聯系人型號.java:
public class ContactModel {
private String id;
private String weight;
private String height;
private String age;
private String gender;
private String bmi;
public ContactModel(String id, String weight, String height, String age, String gender,String bmi) {
this.id = id;
this.weight = weight;
this.height = height;
this.age = age;
this.gender = gender;
this.bmi = bmi;
}
public String getID() {
return this.id;
}
public String getWeight() {
return this.weight;
}
public String getHeight() {
return this.height;
}
public String getAge() {
return this.age;
}
public String getGender() {
return this.gender;
}
public String getBmi() {
return this.bmi;
}
}
Output 。 當我將 cursor 打印到 logcat 時,它顯示相同的文本。
我發現這種方法無需自定義布局即可解決問題。 提取函數(在 MyDatabaseHelper.java 中找到):
public Cursor getListContents(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor data = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
return data;
}
HistoryFragment.java
ListView lw = view.findViewById(R.id.list_View);
ArrayList<String> theList = new ArrayList<>();
Cursor data = myDB.getListContents();
while(data.moveToNext()){
theList.add("ID: " + data.getString(0) +"\nWeight: " + data.getString(1) + "\t\tHeight: " + data.getString(2) + "\t\tAge: " + data.getString(3)
+ "\nGender: " + data.getString(4) + "\t\tBMI: " + data.getString(5));
ListAdapter listAdapter = new ArrayAdapter<>(getActivity(),android.R.layout.simple_list_item_1,theList);
lw.setAdapter(listAdapter);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.