读取 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 方法来创建自定义适配器:

Customizing Android ListView Items with Custom ArrayAdapter

您正在 arrayadapter 中传递用户定义数据类型(对象)的数组列表,而不是字符串或 CharSequence 的数组列表。

使用

ArrayAdapter<String> 

并传递字符串数组列表或者你可以 如果要显示 2 个以上的文本视图,请创建自定义适配器。