Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.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 CursorAdapter的newView()如何工作?_Android - Fatal编程技术网

Android CursorAdapter的newView()如何工作?

Android CursorAdapter的newView()如何工作?,android,Android,我对CursorAdapter的newView()。我特别感兴趣的是框架传递给方法的游标c。我有一个ListView,其中填充了一个CursorAdapter,其中包含4行。在一些解压之后,我看到两个不同的游标c对象被传递到newView()中,这一事实让我感到困惑 我希望将不同的游标传递给方法,在数据库中每个行都有不同的游标对象。考虑到这个假设,我在listview行的checkbox元素上设置了onClick侦听器,但这非常奇怪 @Override public View

我对
CursorAdapter
newView()。我特别感兴趣的是框架传递给方法的
游标c
。我有一个
ListView
,其中填充了一个
CursorAdapter
,其中包含4行。在一些解压之后,我看到两个不同的
游标c
对象被传递到
newView()
中,这一事实让我感到困惑

我希望将不同的
游标
传递给方法,在数据库中每个
都有不同的
游标
对象。考虑到这个假设,我在listview行的checkbox元素上设置了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);
        }

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

可以通过调用cursor.moveTo()将其移动到所需的位置


对于游标适配器,游标通常有一个_ID列,该列的值用于标识行。

概念上的第一个游标类似于迭代器。。。接下来,您应该了解ListView优化。。。如果适配器在已经创建的视图上开始使用
bindView
创建足够多的项目,则无需创建超过ListView可见项目数(+1-2个以上)的ListView和Adapter使用
newView
来创建这些项目。是的,我为此实现了bindView()。