CursorAdapter与其他adapter的作用类似,区别是其使用一个cursor,将cursor中的数据显示到某一个UI上。
示例:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dip" />
</LinearLayout>
package com.example.cursoradapter;
import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract.Contacts;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MyCursorAdapter extends CursorAdapter {
private static final String TAG = MyCursorAdapter.class.getSimpleName();
private LayoutInflater inflater;
public MyCursorAdapter(Context context, Cursor c) {
super(context, c);
inflater = LayoutInflater.from(context);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LinearLayout linearLayout = (LinearLayout) inflater.inflate(
R.layout.lsit_item, null);
TextView textView = (TextView) linearLayout.findViewById(R.id.name);
textView.setText(cursor.getString(cursor
.getColumnIndex(Contacts.DISPLAY_NAME)));
Log.i(TAG, "newView: " + linearLayout);
return linearLayout;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
LinearLayout linearLayout = (LinearLayout) view;
TextView textView = (TextView) linearLayout.findViewById(R.id.name);
textView.setText(cursor.getString(cursor
.getColumnIndex(Contacts.DISPLAY_NAME)));
Log.i(TAG, "bindView: " + linearLayout);
}
}
package com.example.cursoradapter;
import android.os.Bundle;
import android.provider.ContactsContract.Contacts;
import android.app.ListActivity;
import android.database.Cursor;
import android.view.Menu;
public class MainActivity extends ListActivity {
private static final String[] PROJECTION = new String[] { Contacts._ID,
Contacts.DISPLAY_NAME };
@Override
protected 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));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
源码下载: http://download.csdn.net/detail/lxgwm2008/5166571