【发布时间】:2013-12-05 19:01:32
【问题描述】:
我在资产文件夹中有一个外部数据库。我已经成功地将它加载到我的模拟器上并对其执行操作。 我也知道如何使用 Spinner 和 ListView 中的查询来填充数据。
主要问题:我正在运行一个查询,它提供了表中的所有数据。我将它们存储在 Bean 类中。现在我已经成功地将其中一个列数据填充到微调器中。
但是,当我打开微调器时,我没有将数据库值而是对象名称放入微调器
例如——com.mypackageName.BeanPackage.BeanClass@411da123
我得到了整个微调器,而不是数据库中的数据(例如 13、13/1)。
我的代码:
在 DBHelper 类中查询:
public Cursor getBusNumbers() {
// date="21-10-2013";
String myPath = DB_PATH + DB_NAME;
db = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READONLY);
return db.rawQuery("select * from table", null);
}
在我的主要活动中:
适配器代码:
adapter = new Adapter(MainActivity.this,android.R.layout.simple_spinner_item, array);
route.setAdapter(adapter);
adapter.notifyDataSetChanged();
我的 GetView 方法:
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = ((LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(layout, null);
}
final Bean item = items.get(position);
final TextView km = (TextView) convertView
.findViewById(android.R.id.text1);
km.setText(item.getRouteNumber());
km.setTextSize(22);
return convertView;
}
}
填充数组的方法:
private void loadFieldDatabase() {
Cursor c = dbhelper.getBusNumbers();
if (c != null && c.getCount() > 0) {
c.moveToFirst();
for (int count = 0; count < c.getCount(); count++) {
Bean detail = new Bean();
detail.setRouteNumber(c.getString(c
.getColumnIndex("route_number")));
array.add(detail);
c.moveToNext();
}
c.close();
//dbhelper.close();
}
【问题讨论】:
-
我认为在设置适配器之前调用 adapter.notifyDataSetChanged()
-
向数组插入数据后代码
-
添加了数组插入方法。为什么将对象名称而不是数据库数据加载到 Spinner 中的任何具体原因?
-
你在 Bean 课上做什么??
-
它有getter和setter方法。没有别的