1

我想用 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(非常小的图片)????谢谢

4

1 回答 1

0

使用 BitmapFactory.decodeByteArray 其中字节数组取自 Cursor.getBlob()

于 2013-10-17T19:48:08.970 回答