Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AutoCompleteTextView工作不正常_Android_Android Arrayadapter_Autocompletetextview - Fatal编程技术网

Android 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

我正在尝试使用autocompletetextview,并参考了一些教程

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(); 
}