我想用 simplecursoraapter 和内置的 ListView 查看我的联系人列表,显示他们的姓名、电子邮件和图片(全部保存在 sqlite 中)
拥有此代码(请注意,我没有使用光标,我使用 null 因为我稍后会提供光标):
private CursorAdapter contactAdapter;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
contactList = getListView();
contactList.setOnItemClickListener(viewContactListener);
String[] from = new String[] { "name","email","image" };
int[] to = new int[] { R.id.contactTextView,R.id.emailTextView2,R.id.imageView1};//imageView1 is a ImageView
contactAdapter = new SimpleCursorAdapter(
MyFirstActivity.this, R.layout.contact_list_item, null, from, to);
setListAdapter(contactAdapter);
}
接着:
@Override
protected void onResume()
{
super.onResume();
new StartPopulate().execute((Object[]) null);
}
private class StartPopulate extends AsyncTask<Object, Object, Cursor>
{
MyDatabaseConnector myDatabaseConnector =
new MyDatabaseConnector(myActivity.this);
// perform the database access
@Override
protected Cursor doInBackground(Object... params)
{
myDatabaseConnector.open();
return databaseConnector.getAllContacts(); //it is a cursor where I have the fields which I want to return
}
@Override
protected void onPostExecute(Cursor result)
{
contactAdapter.changeCursor(result);
myDatabaseConnector.close();
}
}
如果您注意到我在 onPostExecute 内提供了带有 changeCursor 的光标,而不是在开始时,那么我的问题是: 1.-如何以这种方式使用 viewBinder?SimpleCursorAdapter 中的图像我想在里面添加一个图像(int[] to = new int[] { R.id.contactTextView,R.id.emailTextView2,R.id.imageView1};//imageView1 是一个 ImageView)所以在这个我可以看到姓名、电子邮件、图像的方式
我的数据库也有以下内容:字段:
"CREATE TABLE wholeContacts" +
"(_id integer primary key autoincrement," +
"name TEXT, email TEXT, +
"image BLOB);";
2.-如果可以包含近5000条记录,使用sqlite保存图片(内部数据库)是一个好习惯,但图片是2.6kb(非常小的图片)????谢谢