【问题标题】:Issue in Data filled in Spinner from Database从数据库中填写 Spinner 的数据问题
【发布时间】: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方法。没有别的

标签: android sqlite spinner


【解决方案1】:

在您的代码中,您将 Bean 对象设置到 Text 视图中,以确定您需要设置哪个项目。

试试这个代码,这可能对你有帮助。

private void loadSpinnerCourse() {
        // TODO Auto-generated method stub
        List<String> lables = getAllCourse();

        // Creating adapter for spinner
        dataAdapterCourse = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_spinner_item, lables);
        // Drop down layout style - list view with radio button
        dataAdapterCourse
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        // attaching data adapter to spinner
        mLesson_course.setAdapter(dataAdapterCourse);
    }

    private List<String> getAllCourse() {
        // TODO Auto-generated method stub
        List<String> labels = new ArrayList<String>();
        mCoureseIdList = new ArrayList<String>();

        ExamDatabaseConnector dbConnector = new ExamDatabaseConnector(
                getActivity());
        dbConnector.open();
        String selectQuery = "SELECT  * FROM courses_stud";

        Cursor cursor = dbConnector.database.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                mCoureseIdList.add(cursor.getString(0));
                labels.add(cursor.getString(1));
            } while (cursor.moveToNext());
        }

        // closing connection
        cursor.close();
        dbConnector.database.close();

        // returning lables
        return labels;
    }

【讨论】:

    【解决方案2】:
        Cursor cursor = db.getAllBhashat();
        SpinnerArr = new String[cursor.getCount()+1];
    
    
        SpinnerArr[0] = "<-SELECT->";
    
    
        if(cursor.moveToNext()){
            int i = 1;
            do {
                SpinnerArr[i] = cursor.getString(cursor
                        .getColumnIndex("LocalityTitle_E"));
    
    
    
                i++;
            } while (cursor.moveToNext());
        }if (cursor != null && !cursor.isClosed()) {
            cursor.close();
        }
        ArrayAdapter<String> adapter_sorCat = new ArrayAdapter<String>(
                this, android.R.layout.simple_spinner_item, SpinnerArr);
        Spinner.setAdapter(adapter_sorCat);
        adapter_sorCat
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 2021-02-10
      • 2020-06-11
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      相关资源
      最近更新 更多