无法从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();
}
}
这是我的主要活动中的代码 这是我智能手机中代码的结果:
我无法显示来自SQLite的数据 我已经使用SQL命令保存了数据。
我该怎么办?
答案 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 []。