Spinner:如何从数据库中为特定行设置默认选择的Spinner选项

3

我有一个国家的旋转器。当我执行更新功能时,我希望无论保存在数据库中的数据是什么,都能保存在编辑文本和旋转器中。对于旋转器,我得到一个资源未找到的错误。

我已经按照以下方式设置了从数据库到旋转器的默认选择数据:

// local country is added in arraylist

   ArrayList<String> arraylist_country = new ArrayList<String>();
    arraylist_country.add(memberPersonalDetailsScreenActivityController.getMemberMasterData().get(0).getL_country().toString());

       for(int i=0 ; i<length ; i++){
          if(select_member_id == member_id[i]){
             spinner_country.setSelection(arraylist_country.indexOf(local_country[i]));
          }

有没有其他解决方案可以将默认选择数据设置为Spinner?

如果您可以发布更多的代码,那么复制问题会更好。请同时发布logcat日志。 - Gaurav Chawla
2个回答

1
我已解决了我的问题。我已经在这里提供了我的代码。通过这种方式,我们可以从数据库中为特定行设置Spinner的默认选择。
在onCreate中-
    //Declared spinner and used ArrayAdapter

    spinner_country = (Spinner) findViewById(R.id.spinner_country_susa);
    spinner_country.setOnItemSelectedListener(this);

    country_adapter = ArrayAdapter.createFromResource(this, R.array.country_array, android.R.layout.simple_spinner_item);
    country_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner_country.setAdapter(country_adapter);

在edit()函数中-
//user defined function called in onCreate()
    String[] local_country = memberPersonalDetailsScreenActivityController.getMemberMasterData().get(0).getL_country();
    for(int i=0 ; i<length ; i++){
        if(select_member_id == member_id[i]){
             spinner_country.setSelection(country_adapter.getPosition(local_country[i]));
        }
    }

0
在我的代码中,当我打开活动并将值从Spinner加载时,我首先从数据库中读取所需的表。在我的表中,我设置了布尔值,整个表中只有一个值为true。首先,我设置一个默认值为true。如果用户想要更改它,则在打开活动并输入默认值时,将新值设置到spinner中,按保存或其他操作,并在数据库表中将布尔值从默认值更改为新值。此外,当您打开活动时,将真实值设置为Spinner中的值。 希望这可以帮助您,不要让您感到困惑:P
以下是我的代码,可能不是最好的编写代码,但它运行良好:
db.open();
        Cursor c1 = db.getAllCurrencies();
        currentCurrencyList = new ArrayList<String>();
        if (c1.moveToFirst()) {
            do {
                currentCurrencyList.add(c1.getString(c1
                        .getColumnIndex(DBAdapter.MY_CURRENT_CURRENCY_NAMES)));
            } while (c1.moveToNext());
        }
        db.close();
        dataAdapter1 = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, currentCurrencyList);
        dataAdapter1
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        currencySpinner.setAdapter(dataAdapter1);
        currencySpinner.setSelection(0);

    db.open();
    Cursor c2 = db.getCurrentCurrency();
    currentCurrencyList2 = new ArrayList<String>();
    String currencySymbol = "";
    if (c2.getCount() == 1) {
        currencySymbol = c2.getString(c2
                .getColumnIndex(DBAdapter.MY_CURRENT_CURRENCY_NAMES));
    }
    currentCurrency.setText(currencySymbol);
    db.close();

    setNewCurrencyButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String spinnerSelection = "";
            spinnerSelection = currencySpinner.getSelectedItem().toString();
            db.open();
            db.updateOldCurrency();
            db.updateCurrentCurrency(spinnerSelection);
            Cursor c3 = db.getCurrentCurrency();
            currentCurrencyList3 = new ArrayList<String>();
            String currencySymbol2 = "";
            if (c3.moveToFirst()) {
                do {
                    currentCurrencyList3.add(c3.getString(c3
                            .getColumnIndex(DBAdapter.MY_CURRENT_CURRENCY_NAMES)));
                } while (c3.moveToNext());
                for (int i = 0; i <= currentCurrencyList3.size() - 1; i++) {
                    currencySymbol2 = currentCurrencyList3.get(i);
                }
            }
            currentCurrency.setText(currencySymbol2);
            db.close();
        }
    });

dpAdapter类

public boolean updateOldCurrency() {
    ContentValues args = new ContentValues();
    args.put(MY_CURRENT_CURRENCY_BOOLEAN, 0);
    return db.update(MY_CURRENT_CURRENCY_TABLE, args,
            MY_CURRENT_CURRENCY_BOOLEAN + "='" + 1 + "'", null) > 0;
}

public boolean updateCurrentCurrency(String rowId) {
    ContentValues args = new ContentValues();
    args.put(MY_CURRENT_CURRENCY_BOOLEAN, 1);
    return db.update(MY_CURRENT_CURRENCY_TABLE, args,
            MY_CURRENT_CURRENCY_NAMES + "='" + rowId + "'", null) > 0;
}

这是你要找的吗,老铁? - antonis lambrianides

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接