我对Android很新,我使用Android Studio进行开发。
我正在开发一个与SQL Server通信的应用程序,并将数据检索到Android并根据用户请求显示它们。
我目前遇到了错误。我应该做的是,有一个AutoCompleteTextView字段,我可以为其检索数据并显示用户选择(例如,组织/公司名称)。现在,在选择此字段上的选项时,我必须使用此选项(组织/公司名称)发送查询,并从数据库中检索与此选项有关的数据(例如,所选组织/公司中的联系人姓名)并在第二个AutoCompleteTextView字段中将此数据显示为选项。
我使用ArrayAdapter在OnCreate
方法中执行了此操作,但应用程序仍然崩溃,现在我意识到这是因为第二个AutoCompleteTextView字段的值在OnCreate期间不可用。
我需要能够在选择第一个AutoCompleteTextView字段的值时动态更改第二个AutoCompleteTextView字段。
关于如何克服这个问题的任何建议?
答案 0 :(得分:0)
无需尝试在AutoCompleteTextView
内的第二个onCreate()
中设置结果。您可以在外面完成任务,完成后,将值设置为它。检查AsyncTask,它可能非常有用。
答案 1 :(得分:0)
您可以使用此代码启发并使用:
txtSearch = (TextView) findViewById(R.id.txtSearch);
txtSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence value, int start, int count, int after) {
if(value.length() > 0){
notes.clear();
cursorS = sql.rawQuery("SELECT CategoryID,Title from WebSite_CategoryDB WHERE ParentID = 0 AND Title LIKE + '" + "%" + value + "%" + "'",null);
try {
if (cursorS != null) {
if (cursorS.moveToFirst()) {
do {
StartActivity_Entity nte = new StartActivity_Entity();
nte._CategoryID = cursorS.getInt(cursorS.getColumnIndex("CategoryID"));
nte._Title = cursorS.getString(cursorS.getColumnIndex("Title"));
notes.add(nte);
} while (cursorS.moveToNext());
}
adapter.notifyDataSetChanged();
}
} catch (Exception e) {
} finally {
cursorS.close();
}
}else if(value.length() == 0){
populateListView();
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
好看。