2012-07-01 34 views
1

有我有应用SQLiteDataBase表两个字段Android的列表视图

1.sender .... 2.message

messagedb=context.openOrCreateDatabase("message",0, null); 
        messagedb.execSQL("CREATE TABLE IF NOT EXISTS tab2(sender INT(13),body varchar)"); 
        mydb.execSQL("INSERT INTO tab2 VALUES('"+sender+"','"+sb+"')"); 
//sb contains message 

我怎么能填充从数据库中一个ListView像

http://a6.sphotos.ak.fbcdn.net/hphotos-ak-ash4/483993_349052115164919_754938581_n.jpg

图片空间包含联系人图片,上面的textfield包含发件人名称(联系人名称)下方的那个地方mes圣人....我也想添加消息收到的日期和时间也....任何想法呢?

+0

的URL画面不工作了 –

回答

0

创建自定义SimpleCursorAdapter.I认为您足够聪明,可以查询所需列的数据库。 一旦您的cusror准备就绪,请将其传递给自定义适配器。

下面的代码会帮助你。

cursor = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, 
       null, null, null); 

contactList.setAdapter(new MyCursorAdapter(this, R.layout.row, cursor, 
       new String[] { ContactsContract.Contacts.DISPLAY_NAME, 
         ContactsContract.Contacts.LAST_TIME_CONTACTED }, 
       new int[] { R.id.name, R.id.email })); 

MyCursorAdapter.java

public class MyCursorAdapter extends SimpleCursorAdapter { 

    private Cursor cursor; 
    private int layout; 
    private Context context; 

    public MyCursorAdapter(Context context, int layout, Cursor cursor, 
      String[] from, int[] to) { 
     super(context, layout, cursor, from, to); 
     this.context = context; 
     this.cursor = cursor; 
     this.layout = layout; 

    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     cursor.moveToPosition(position); <---- This is very important. 
     LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = inflater.inflate(layout, null); 
     TextView txtName = (TextView) view.findViewById(R.id.name); 
     TextView txtEmail = (TextView) view.findViewById(R.id.email); 

     int nameColumnIndex = cursor 
       .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); 
     int frequencyColumnIndex = cursor 
       .getColumnIndex(ContactsContract.Contacts.TIMES_CONTACTED); 

     txtName.setText(cursor.getString(nameColumnIndex)); 
     txtEmail.setText(cursor.getString(frequencyColumnIndex)); 
     return view; 
    } 
}