无法从SQLite显示ListView

时间:2016-06-10 09:28:22

标签: java android sqlite android-sqlite

无法从SQLite显示ListView 我该如何解决这个问题?

public class MainActivitySleman extends AppCompatActivity {
TukangDB dbcenter;
protected Cursor cursor;
String [] daftar;
ListView list;
public static MainActivitySleman sleman;
private String cariTukang;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_activity_sleman);

    dbcenter = new TukangDB(this);
    sleman = this;
    RefreshList();
}

public void  RefreshList(){
    SQLiteDatabase db = dbcenter.getReadableDatabase();
    cursor = db.rawQuery("select no from tucall", null);
    daftar = new String[cursor.getCount()];
    cursor.moveToFirst();
    for (int i = 0; i < cursor.getCount() ; i++) {
        cursor.moveToPosition(i);
        daftar[i] = cursor.getString(0).toString();
    }
    list = (ListView) findViewById(R.id.listViewSleman);
    list.setAdapter(new ArrayAdapter(this,     android.R.layout.simple_list_item_1, daftar));
    list.setSelected(true);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            final String selection = daftar[position];
            Intent i = new Intent(getApplicationContext(), Detail.class);
            i.putExtra("no", selection);
            startActivity(i);
        }
    }) ;
    ((ArrayAdapter) list.getAdapter()).notifyDataSetChanged();
}
}

这是我的主要活动中的代码 这是我智能手机中代码的结果:

Screenshot from my smartphone

我无法显示来自SQLite的数据 我已经使用SQL命令保存了数据。

我该怎么办?

3 个答案:

答案 0 :(得分:0)

由于您在调用TukangDB之前实例化RefreshList(),因此如果您在其构造函数中填充数据,则可以在其中包含数据。

我假设您没有这样做,因此当您尝试从中获取数据时,您的数据库为空。

发布TukangDB课程的代码可以让我们确定问题是肯定的。

答案 1 :(得分:0)

这是我的TukangDB类

public class TukangDB extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "tucall.db";

public TukangDB(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String sql = "create table tucall(no integer primary key, nama text null, alamat text null, no_hp text null, keahlian text null, tarif integer, wilayah text null)";
    Log.d("Data", "onCreate: "+sql);
    db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}

答案 2 :(得分:-1)

你可以发布你的ArrayAdapter类吗? 你的daftar对象是否空? 我建议你使用ArrayList而不是String []。