读取 android 中的数据 sqlite 失败
read data sqlite in android failed
我的申请有问题,
目的是读取存储在数据库中的数据,
但它最终显示出意想不到的价值。
这是我的 ViewData.class
public class ViewData extends ListActivity {
//inisialisasi kontroller
private DBDataSource dataSource;
//inisialisasi arraylist
private ArrayList<Wiridan> values;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewdata);
dataSource = new DBDataSource(this);
// buka kontroller
dataSource.open();
// ambil semua data barang
values = dataSource.getAllWiridan();
// masukkan data barang ke array adapter
ArrayAdapter<Wiridan> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, values);
// set adapter pada list
setListAdapter(adapter);
}
}
DBDataSource.java 中用于读取数据的代码
private Wiridan cursorToWiridan(Cursor cursor)
{
// buat objek barang baru
Wiridan wiridan = new Wiridan();
// debug LOGCAT
Log.v("info", "The getLONG "+cursor.getLong(0));
Log.v("info", "The setLatLng "+cursor.getString(1)+","+cursor.getInt(2));
/* Set atribut pada objek barang dengan
* data kursor yang diambil dari database*/
wiridan.setId(cursor.getLong(0));
wiridan.setJudul_wiridan(cursor.getString(1));
wiridan.setJumlah_wiridan(cursor.getInt(2));
//kembalikan sebagai objek barang
return wiridan;
}
//mengambil semua data barang
public ArrayList<Wiridan> getAllWiridan() {
ArrayList<Wiridan> daftarWiridan = new ArrayList<>();
// select all SQL query
Cursor cursor = database.query(DBHelper.TABLE_NAME,
allColumns, null, null, null, null, null);
// pindah ke data paling pertama
cursor.moveToFirst();
// jika masih ada data, masukkan data barang ke
// daftar barang
while (!cursor.isAfterLast()) {
Wiridan wiridan = cursorToWiridan(cursor);
daftarWiridan.add(wiridan);
cursor.moveToNext();
}
// Make sure to close the cursor
cursor.close();
return daftarWiridan;
}
最后一个是我的实体classWiridan.java
public class Wiridan {
private long id;
private String judul_wiridan;
private int jumlah_wiridan;
public Wiridan()
{
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getJudul_wiridan() {
return judul_wiridan;
}
public void setJudul_wiridan(String judul_wiridan) {
this.judul_wiridan = judul_wiridan;
}
public int getJumlah_wiridan() {
return jumlah_wiridan;
}
public void setJumlah_wiridan(int jumlah_wiridan) {
this.jumlah_wiridan = jumlah_wiridan;
}
}
结果出乎意料,它只是显示了包的值,
而不是我从 ResultActivity.java
输入的值
非常感谢您的帮助,抱歉我的英语不好。
当前 ArrayAdapter
适配器正在调用 Wiridan
class 的默认 toString
方法并显示对象字符串表示形式。
要在 ListView 中显示 judul_wiridan
覆盖 Wiridan
中的 toString
方法 class :
@Override
public String toString() {
return getJumlah_wiridan();
}
或者通过扩展 ArrayAdapter
覆盖 getView
方法来创建自定义适配器:
您正在 arrayadapter 中传递用户定义数据类型(对象)的数组列表,而不是字符串或 CharSequence 的数组列表。
使用
ArrayAdapter<String>
并传递字符串数组列表或者你可以
如果要显示 2 个以上的文本视图,请创建自定义适配器。
我的申请有问题,
目的是读取存储在数据库中的数据,
但它最终显示出意想不到的价值。
这是我的 ViewData.class
public class ViewData extends ListActivity {
//inisialisasi kontroller
private DBDataSource dataSource;
//inisialisasi arraylist
private ArrayList<Wiridan> values;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewdata);
dataSource = new DBDataSource(this);
// buka kontroller
dataSource.open();
// ambil semua data barang
values = dataSource.getAllWiridan();
// masukkan data barang ke array adapter
ArrayAdapter<Wiridan> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, values);
// set adapter pada list
setListAdapter(adapter);
}
}
DBDataSource.java 中用于读取数据的代码
private Wiridan cursorToWiridan(Cursor cursor)
{
// buat objek barang baru
Wiridan wiridan = new Wiridan();
// debug LOGCAT
Log.v("info", "The getLONG "+cursor.getLong(0));
Log.v("info", "The setLatLng "+cursor.getString(1)+","+cursor.getInt(2));
/* Set atribut pada objek barang dengan
* data kursor yang diambil dari database*/
wiridan.setId(cursor.getLong(0));
wiridan.setJudul_wiridan(cursor.getString(1));
wiridan.setJumlah_wiridan(cursor.getInt(2));
//kembalikan sebagai objek barang
return wiridan;
}
//mengambil semua data barang
public ArrayList<Wiridan> getAllWiridan() {
ArrayList<Wiridan> daftarWiridan = new ArrayList<>();
// select all SQL query
Cursor cursor = database.query(DBHelper.TABLE_NAME,
allColumns, null, null, null, null, null);
// pindah ke data paling pertama
cursor.moveToFirst();
// jika masih ada data, masukkan data barang ke
// daftar barang
while (!cursor.isAfterLast()) {
Wiridan wiridan = cursorToWiridan(cursor);
daftarWiridan.add(wiridan);
cursor.moveToNext();
}
// Make sure to close the cursor
cursor.close();
return daftarWiridan;
}
最后一个是我的实体classWiridan.java
public class Wiridan {
private long id;
private String judul_wiridan;
private int jumlah_wiridan;
public Wiridan()
{
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getJudul_wiridan() {
return judul_wiridan;
}
public void setJudul_wiridan(String judul_wiridan) {
this.judul_wiridan = judul_wiridan;
}
public int getJumlah_wiridan() {
return jumlah_wiridan;
}
public void setJumlah_wiridan(int jumlah_wiridan) {
this.jumlah_wiridan = jumlah_wiridan;
}
}
结果出乎意料,它只是显示了包的值,
而不是我从 ResultActivity.java
输入的值
非常感谢您的帮助,抱歉我的英语不好。
当前 ArrayAdapter
适配器正在调用 Wiridan
class 的默认 toString
方法并显示对象字符串表示形式。
要在 ListView 中显示 judul_wiridan
覆盖 Wiridan
中的 toString
方法 class :
@Override
public String toString() {
return getJumlah_wiridan();
}
或者通过扩展 ArrayAdapter
覆盖 getView
方法来创建自定义适配器:
您正在 arrayadapter 中传递用户定义数据类型(对象)的数组列表,而不是字符串或 CharSequence 的数组列表。
使用
ArrayAdapter<String>
并传递字符串数组列表或者你可以 如果要显示 2 个以上的文本视图,请创建自定义适配器。