如何从数据库中提取数据并将它们作为 ListView 查看
How to pull data from database and view them as a ListView
我正在为我的 ListView 使用自定义列表适配器。我的每个列表项都有 4 个项目。它们来自 listArray。
这是从列表数组中提取列表项的代码。
import android.app.Fragment;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import com.rupomkhondaker.sonalibank.adapter.PhoneListAdapter;
import com.rupomkhondaker.sonalibank.model.ContactItem;
import java.util.ArrayList;
public class GMOFragment extends Fragment {
public GMOFragment(){}
private boolean database;
private static final String DB_NAME = "SBLdata.db";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_gmo, container, false);
final ArrayList<ContactItem> listData = getListData();
final ListView listView = (ListView) rootView.findViewById(R.id.gmolistView);
listView.setAdapter(new PhoneListAdapter(getActivity(), listData));
DataBaseHelper dataOpen = new DataBaseHelper((MainActivity) getActivity(), DB_NAME);
//Trying to open the DataBase
database = dataOpen.openDataBase();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
ContactItem newsData = (ContactItem) listView.getItemAtPosition(position);
Intent intent = new Intent(getActivity(), ContactDetail.class);
intent.putExtra("DATA_KEY", newsData);
startActivity(intent);
}
});
return rootView;
}
private ArrayList<ContactItem> getListData() {
ArrayList<ContactItem> listMockData = new ArrayList<ContactItem>();
String sqlQuery = "select BR_NAME,PHONE,MOBILE,EMAIL from SBL_Contact";
Cursor contactsCursor = database.rawQuery(sqlQuery, null);
ContactItem newsData = null;
while (contactsCursor.moveToNext()) {
newsData = new ContactItem();
newsData.setName(contactsCursor.getString(0));
newsData.setPhone(contactsCursor.getString(1));
newsData.setMobile(contactsCursor.getString(2));
newsData.setEmail(contactsCursor.getString(3));
listMockData.add(newsData);
}
return listMockData;
}
}
但现在我在 SBL_Contact(table 名称)列 1.NAME、2.PHONE 中的 SBLdata (databse_name) 中创建了相同的列表3.MOBILE , 4.EMAIL
现在请帮我拉取数据并将它们设置到 getListData()
您可以创建一个 sql 查询,例如:
String sqlQuery = "select name,phone,mobile,email from SBL_Contact";
然后配合游标使用得到结果:
Cursor contactsCursor = database.rawQuery(sqlQuery, null);
然后遍历您的光标:
ContactItem newsData = null;
while (contactsCursor.moveToNext()) {
newsData = new ContactItem();
newsData.setName(contactsCursor.getString(0));
newsData.setPhone(contactsCursor.getString(1));
newsData.setMobile(contactsCursor.getString(2));
newsData.setEmail(contactsCursor.getString(3));
listMockData.add(newsData);
}
我正在为我的 ListView 使用自定义列表适配器。我的每个列表项都有 4 个项目。它们来自 listArray。
这是从列表数组中提取列表项的代码。
import android.app.Fragment;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import com.rupomkhondaker.sonalibank.adapter.PhoneListAdapter;
import com.rupomkhondaker.sonalibank.model.ContactItem;
import java.util.ArrayList;
public class GMOFragment extends Fragment {
public GMOFragment(){}
private boolean database;
private static final String DB_NAME = "SBLdata.db";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_gmo, container, false);
final ArrayList<ContactItem> listData = getListData();
final ListView listView = (ListView) rootView.findViewById(R.id.gmolistView);
listView.setAdapter(new PhoneListAdapter(getActivity(), listData));
DataBaseHelper dataOpen = new DataBaseHelper((MainActivity) getActivity(), DB_NAME);
//Trying to open the DataBase
database = dataOpen.openDataBase();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
ContactItem newsData = (ContactItem) listView.getItemAtPosition(position);
Intent intent = new Intent(getActivity(), ContactDetail.class);
intent.putExtra("DATA_KEY", newsData);
startActivity(intent);
}
});
return rootView;
}
private ArrayList<ContactItem> getListData() {
ArrayList<ContactItem> listMockData = new ArrayList<ContactItem>();
String sqlQuery = "select BR_NAME,PHONE,MOBILE,EMAIL from SBL_Contact";
Cursor contactsCursor = database.rawQuery(sqlQuery, null);
ContactItem newsData = null;
while (contactsCursor.moveToNext()) {
newsData = new ContactItem();
newsData.setName(contactsCursor.getString(0));
newsData.setPhone(contactsCursor.getString(1));
newsData.setMobile(contactsCursor.getString(2));
newsData.setEmail(contactsCursor.getString(3));
listMockData.add(newsData);
}
return listMockData;
}
}
但现在我在 SBL_Contact(table 名称)列 1.NAME、2.PHONE 中的 SBLdata (databse_name) 中创建了相同的列表3.MOBILE , 4.EMAIL
现在请帮我拉取数据并将它们设置到 getListData()
您可以创建一个 sql 查询,例如:
String sqlQuery = "select name,phone,mobile,email from SBL_Contact";
然后配合游标使用得到结果:
Cursor contactsCursor = database.rawQuery(sqlQuery, null);
然后遍历您的光标:
ContactItem newsData = null;
while (contactsCursor.moveToNext()) {
newsData = new ContactItem();
newsData.setName(contactsCursor.getString(0));
newsData.setPhone(contactsCursor.getString(1));
newsData.setMobile(contactsCursor.getString(2));
newsData.setEmail(contactsCursor.getString(3));
listMockData.add(newsData);
}