Android AutoCompleteTextView工作不正常
我正在尝试使用autocompletetextview,并参考了一些教程Android AutoCompleteTextView工作不正常,android,android-arrayadapter,autocompletetextview,Android,Android Arrayadapter,Autocompletetextview,我正在尝试使用autocompletetextview,并参考了一些教程 final AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocompleteProduct); db=new DatabaseHelper(this); String[] products=db.getAllProducts(); adapter = new
final AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocompleteProduct);
db=new DatabaseHelper(this);
String[] products=db.getAllProducts();
adapter = new ArrayAdapter<String>(this, R.layout.list_item, products);
textView.setThreshold(1);
textView.setAdapter(adapter);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.showDropDown();
}
});
textView.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(final Editable editable) {
}
@Override
public void beforeTextChanged(final CharSequence string,
final int start, final int count, final int after) {
}
@Override
public void onTextChanged(final CharSequence string, final int start,
final int before, final int count) {
System.out.println("in ontextchanged ps");
Intent i=new Intent(ProductsSearch.this,Shops.class);
startActivity(i);
}
});
但在autocompletetextview中键入单个字母后,它将被禁用,并且下一个activityShops活动将在不显示任何建议的情况下启动。我无法输入任何输入。它引发以下错误
07-11 16:48:29.873: W/System.err(2045): android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
07-11 16:48:29.883: W/System.err(2045): at android.database.AbstractCursor.checkPosition(AbstractCursor.java:426)
07-11 16:48:29.883: W/System.err(2045): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
07-11 16:48:29.883: W/System.err(2045): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
07-11 16:48:29.883: W/System.err(2045): at helper.DatabaseHelper.getShopNames(DatabaseHelper.java:454)
07-11 16:48:29.953: W/System.err(2045): at com.example.cognizantshopping.Shops.onCreate(Shops.java:30)
请告诉我哪里出错了。请提前感谢。如果要从游标对象访问数据,则必须定位游标对象 实际上,在尝试从第一行访问数据之前,必须将光标定位到第一行 执行查询后,必须调用cur.moveToFirst 试试这个
String getPost = "SELECT * FROM " + TABLE_POST + ";";
Cursor result = getReadableDatabase().rawQuery(getPost, null);
List posts = new ArrayList();{
Log.d("count", result.getCount() + " post rows");
if (result .moveToFirst()) {
do {
Post post = new Post();
post.setPostId(result.getInt(0));
posts.add(post);
....
} while (result .moveToNext());
}
result .close();
第二件事
无论何时处理游标,都要检查null和moveToFirst,不要失败
if( cursor != null && cursor.moveToFirst() ){
num = cursor.getString(cursor.getColumnIndex("ContactNumber"));
cursor.close();
}
适当地放置日志,以查看它是返回null还是返回空游标。根据这一点,检查您的查询。在此处查看我的答案:光标不是空的。它返回3行。相同的错误仍然存在。使用textChangedListener进行autoCompleteTextView是否正确?
if( cursor != null && cursor.moveToFirst() ){
num = cursor.getString(cursor.getColumnIndex("ContactNumber"));
cursor.close();
}