0

我对newView()of 的CursorAdapter工作原理有点困惑。我Cursor c特别对框架传递给该方法的内容感兴趣。我有一个ListView其中填充了一个CursorAdapter包含 4 行的内容。经过一些debagging后,我看到两个不同Cursor c的对象传递给了newView(),这个事实让我感到困惑。

我期待不同Cursor的传递给方法,Cursor每个数据库中的不同对象row。因此,考虑到这个假设,我在列表视图行的复选框元素上设置了 onClick 侦听器,但这很奇怪。

  @Override
        public View newView(Context ctxt, Cursor c, ViewGroup parent) {
            View row;
            final Cursor cursor = c;
            LayoutInflater inflater = ((Activity) ctxt).getLayoutInflater();
            row = inflater.inflate(R.layout.row, parent, false);
            this.defaultDrawable = (Drawable) row.getBackground();
            final CheckBox mStar = (CheckBox) row.findViewById(R.id.star);
            mStar.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    if (mStar.isChecked()) {
                        mDbHelper.updateFavorite(cursor, 1);
                    } else {
                        mDbHelper.updateFavorite(cursor, 0);
                    }
                }
            });

            ViewHolder holder = new ViewHolder(row);

            row.setTag(holder);

            return (row);
        }
4

1 回答 1

0

光标是指向您在创建视图时所处位置的指针。在 onClick 方法中,它将指向查询中的其他位置。

您可以通过调用 cursor.moveTo(); 将其移动到您想要的位置。

在 CursorAdapter 的情况下,游标通常有一个 _ID 列,该值用于标识行。

于 2012-09-03T15:32:09.497 回答