SimpleCursorAdapter не связывает данные с listView - PullRequest
0 голосов
/ 30 августа 2011

Как мне связать информацию из моей базы данных с TextView? ListView не показывает информацию из Cursor. Нужно ли использовать адаптер, который я создал? Я пытаюсь отобразить результаты в TextViews со списком.

@Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.contactform);

        Cursor cursor = getCursor();

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(
                this,                                                                                                   //Context
                R.layout.contactform,                                                                                   //xml definintion of each listView item
                cursor,                                                                                                 //Cursor
                new String[] {"FirstName", "LastName", "Phone", "Email"},                                               //Columns to select From
                new int[] {R.id.contact_firstname, R.id.contact_lastname, R.id.contact_phone, R.id.contact_email}       //Object to bind to
                );


    }


    private Cursor getCursor() 
    {           
        String TABLE_NAME = "exampleContacts";
        String[] FROM = {"_id", ""FirstName", "LastName", "Phone", "Email"} ;

        dbManager = new DatabaseManager(this);
        SQLiteDatabase db = dbManager.getReadableDatabase();
        Cursor cursor = db.query(TABLE_NAME, FROM, "ContactID=?", new String[] {PrContactID}, null, null, null);
        startManagingCursor(cursor);
        return cursor;
    }

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

Похоже, вы отбрасываете одну запись. В этом случае вам не нужно использовать SimpleCursorAdapter, так как он обычно используется для назначения нескольких записей в ListView. Почему бы просто не получить нужную информацию и вручную установить ее для ваших TextView (ов)?

Кроме того, вам не нужно использовать курсор управления. Просто получите нужные значения и затем закройте курсор так:

TextView textView = (TextView) findViewById(R.id.textView01); 

Cursor cursor = db.query("exampleContacts", new String[] {"FirstName", "LastName", "Phone", "Email"}, "ContactID=?", new String[] {PrContactID}, null, null, null);
cursor.moveToFirst();

String text = cursor.getString(0) + " " + cursor.getString(1) + " "  + cursor.getString(2) + " " + cursor.getString(3);

textView.setText(text);

cursor.close();

Извините за любые опечатки ... этот код только для примера и не был проверен.

0 голосов
/ 15 ноября 2011

Причина, по которой он не был отображен в ListView, заключается в том, что setListAdapter(); не использовалось.

 @Override
        protected void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.contactform);
    Cursor cursor = getCursor();

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(
            this,                                                                                                   //Context
            R.layout.contactform,                                                                                   //xml definintion of each listView item
            cursor,                                                                                                 //Cursor
            new String[] {"FirstName", "LastName", "Phone", "Email"},                                               //Columns to select From
            new int[] {R.id.contact_firstname, R.id.contact_lastname, R.id.contact_phone, R.id.contact_email}       //Object to bind to
            );

     setListAdapter(adapter);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...