光标getPosition始终为0

时间:2016-09-22 23:57:47

标签: android android-layout android-cursoradapter

我有一个游标,其中getCount返回50.需要在ListView中显示内容,我正在使用如下的游标适配器。出于某些奇怪的原因,列表始终包含一个元素。记录后,我发现cursor.getPosition()始终为0.为什么?我一直在使用CursorAdapters一段时间之前我从未遇到过这个问题。所以我感到困惑,看不出我做错了什么。

Cursor cursor = getContext().getContentResolver().query(uri, PROJECTION,null,null,null);
    MyLog.d(TAG,"cursor count is %s",cursor.getCount());
    cursor.moveToFirst();
    CursorAdapter cursorAdapter = new CursorAdapter(getContext(),cursor,true){
        @Override
        public View newView(Context context,Cursor cursor,ViewGroup parent){
            MyLog.d(TAG,"newView cursor count %s position %s",cursor.getCount(),cursor.getPosition());
            return LayoutInflater.from(context).inflate(R.layout.my_row,parent,false);
        }

        @Override
        public void bindView(View view,Context context,Cursor cursor){
            MyLog.d(TAG,"bindView at index %s",cursor.getPosition());
            TextView name = (TextView) view.findViewById(R.id.name);
            TextView address = (TextView) view.findViewById(R.id.address);
            String naTxt = cursor.getString(COL_NAME);
            String addTxt = cursor.getString(COL_ADDR)
                    +" "
                    +cursor.getString(COL_STR);
            name.setText(naTxt);
            address.setText(addTxt);
        }
    };

    root.setAdapter(cursorAdapter);

2 个答案:

答案 0 :(得分:1)

我发现了这个问题,这确实是最新机器人的新事物,因为我之前还没有见过它。对于行布局,我有android:layout_height="match_parent"。我应该使用android:layout_height="wrap_content"。打败我。

答案 1 :(得分:0)

请尝试删除

  

cursor.moveToFirst();

并使用

CursorAdapter cursorAdapter = new CursorAdapter(getContext(),cursor,0)

而不是CursorAdapter cursorAdapter = new CursorAdapter(getContext(),cursor,true)

您应该使用android.widget.CursorAdapter