1

2 つのフィールドを持つ SQLiteDataBase テーブルを持つアプリケーション

1.送信者.... 2.メッセージ

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

写真スペースには連絡先の写真が含まれ、テキストフィールドの上には送信者名 (連絡先名) が含まれ、その下にメッセージが表示されます..また、メッセージの受信日時も追加したい....これについて何か考えはありますか?

4

1 に答える 1

0

カスタム SimpleCursorAdapter を作成します。必要な列についてデータベースにクエリを実行するのに十分賢いと思います。cusror の準備ができたら、Custom Adapter に渡します。

以下のスニペットが役立ちます。

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;
    }
}
于 2012-07-01T13:14:37.707 に答える