【问题标题】:Edit text to Spinner - Android Studio将文本编辑到 Spinner - Android Studio
【发布时间】:2021-01-06 19:56:01
【问题描述】:

我有 3 个活动。

在第一个活动中,我可以编辑保存在数据库中的 4 个字符串类型值。用户名、姓名和电话。

这个想法是一个用户标识可以被多次使用。

因此,如果我多次为值 userid 提供字符串“James”,在第二个活动中,我可以在编辑文本中键入字符串“james”,并且我数据库中的每个值都具有用户 ID 字符串“James”将出现在微调器

public class SecondActivity extends AppCompatActivity {

public DBHelper helper;
public ArrayList<String> theList;

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

    String input =((EditText)findViewById(R.id.editText)).getText().toString();
    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    helper = new DBHelper(SecondActivity.this);
    SQLiteDatabase database = helper.getReadableDatabase();
    theList = new ArrayList<>();

    Cursor cursor = database.query(DBHelper.TABLE_NAME, new String[]{DBHelper.FIELD_4}, DBHelper.FIELD_1+"=?", new String[]{input}, null, null, null);
    if (cursor.moveToFirst())
    {
        do
        {
            theList.add(cursor.getString(4));
        } while (cursor.moveToNext());
    }

    ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(SecondActivity.this, android.R.layout.simple_spinner_item, theList);
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(spinnerAdapter);
}

}

到目前为止,这是我的代码,我认为它可以工作,但它没有。

注意:我不能使用原始查询

【问题讨论】:

    标签: android android-edittext spinner android-spinner android-database


    【解决方案1】:

    您搜索数据库的代码看起来不错,但您需要确保:

    1. 您使用onCreate()EditText 字符串的值搜索了数据库,而没有更改用户在EditText 中输入他们的文本;因此,如果您没有在XML 布局中为此EditText 设置值,那么input 将包含一个空的String,从而导致Spinner 中的一个空列表

    2. 确保不要在查询中使用抽象数字并使用最终值;所以你会改变:

    theList.add(cursor.getString(4));
    

    进入

    theList.add(cursor.getColumnIndex(DBHelper.FIELD_4));
    

    您也可以尝试将您的查询与LIKE 匹配并删除选择参数作为替代解决方案

    Cursor cursor = database.query(DBHelper.TABLE_NAME, 
                                    new String[]{DBHelper.FIELD_4},  // columns to return (projection)
                                    DBHelper.FIELD_1 + " LIKE '%" + input + "%' " // selection
                                    null,  // selection args
                                    null, null, null);  
    

    【讨论】:

    • 我刚改成 theList.add(cursor.getString(4));到 List.add(cursor.getString(0));它似乎按我的意愿工作。不太明白为什么,但现在还好
    • @DimitrisSioutis 很高兴知道 .. 如果它帮助您解决问题,请接受答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2022-07-27
    • 2020-05-13
    • 2017-10-05
    • 2021-09-11
    • 1970-01-01
    • 2011-03-17
    相关资源
    最近更新 更多