CursorAdapter使用

来源:互联网 发布:大华监视器软件下载 编辑:程序博客网 时间:2024/05/21 14:02






1. Adapter的关系图 



2. CursorAdapter构造函数

public CursorAdapter (Context context, Cursor c)

Api11开始被弃用

public CursorAdapter (Context context, Cursor c, boolean autoRequery)

autoequery作用: 当数据库更新,cursor是否更新
      例子说明

public CursorAdapter (Context context, Cursor c, int flags)

Flags used to determine the behavior of the adapter; may be any combination of FLAG_AUTO_REQUERY andFLAG_REGISTER_CONTENT_OBSERVER.



3. newView  与 bindView

public abstract void bindView (View view, Context context, Cursor cursor)

Bind an existing view to the data pointed to by cursor  //重用一个已有的view,使其显示当前cursor所指向的数据。

参数viewExisting view, returned earlier by newViewcontextInterface to application's global informationcursorThe cursor from which to get the data. The cursor is already moved to the correct position.


public abstract View newView (Context context, Cursor cursor, ViewGroup parent)

Makes a new view to hold the data pointed to by cursor. //新建一个视图来保存cursor指向的数据

参数contextInterface to application's global informationcursorThe cursor from which to get the data. The cursor is already moved to the correct position.parentThe parent to which the new view is attached to返回值

  • the newly created view.



4.例子:

CursorAdapter:

 public MyCursorAdapter(Context context, Cursor c, boolean autoRequery) {        super(context, c, autoRequery);    }    @Override    public View newView(Context context, Cursor cursor, ViewGroup parent) {        View view = LayoutInflater.from (parent.getContext())                .inflate(R.layout.list_item, parent, false);        ViewHolder viewHolder = new ViewHolder();        viewHolder.textView = (TextView) view.findViewById(R.id.name);        viewHolder.textView.setText(cursor.getString(cursor                .getColumnIndex(Contacts.DISPLAY_NAME)));        view.setTag(viewHolder);        return view;    }    @Override    public void bindView(View view, Context context, Cursor cursor) {        final ViewHolder viewHolder = (ViewHolder)view.getTag();        viewHolder.textView.setText(cursor.getString(cursor                .getColumnIndex(Contacts.DISPLAY_NAME)));        viewHolder.textView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(v.getContext(),viewHolder.textView.getText().toString(),Toast.LENGTH_SHORT).show();            }        });    } private class ViewHolder {        public  TextView textView;    }



Activity:

private static final String[] PROJECTION = new String[] { Contacts._ID,Contacts.DISPLAY_NAME };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Cursor cursor = getContentResolver().query(Contacts.CONTENT_URI,PROJECTION, null, null, null);startManagingCursor(cursor);setListAdapter(new MyCursorAdapter(getApplicationContext(), cursor,false));}



5.扩展



    if(cursor.getCount() == cursor.getPosition()){


        }else{
            String name = cursor.getString(cursor
                    .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            viewHolder.editeText.setText(name);
        }
cursor.getPosition()  获得当前下标(0开始)
cursor.moveToLast()  移动到最末
cursor.getCount()   获得数量
cursor.isLast()   判断是否最后一个,false:不再最后一个,包括超出范围



 if(cursor.getCount() =< cursor.getPosition()){}     判断是否超出末端


        }



6.代码

注意:demo为android studio工程
Demo.jar

0 0
原创粉丝点击